关于javascript:使用ajax to php通过POST传递多个参数

Passing multiple parameters by POST using ajax to php

我正在尝试通过POST方法使用AJAX将多个参数传递给我的PHP文件,以便我可以查询MySQL数据库。

HTML文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            <select  class="dropdown-select" id="searchselect11" required>

                        <option value="faculty">Faculty</option>
                        <option value="dept">Dept.</option>
                        <option value="course">Course</option>
                        <option value="year">Year</option>
                        <option value="name">Name</option>

            </select>
         


<td style="padding:5px;"> <input type="text" id="searchtext11" required></td>

<button id="searchgo1"  onclick="searchone()"></button>

这是我成功访问下拉值和文本框值的Javascript文件,并将它们分别存储在svsearchtext11变量中。 但问题是将两个值传递给PHP文件。 问题似乎是在xmlhttp.send(the_data);中传递的the_data变量

searchone()功能如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function searchone()
{
//alert("hi");

var xmlhttp;
var sel = document.getElementById('searchselect11');
var sv = sel.options[sel.selectedIndex].value;
var searchtext11= document.getElementById("searchtext11").value;
var  the_data = 'select='+sv+'text='+searchtext11;


if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }




  xmlhttp.open("POST","searchone.php", true);          
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");            
  xmlhttp.send(the_data);      


  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      document.getElementById("searchresults").innerHTML = xmlhttp.responseText;
    }
  }
}

此PHP代码仅适用于

1
var the_data='select='+sv;

searchone.php

1
2
3
4
5
6
7
8
9
<?php  


if (isset($_POST['select'])) {
    $str = $_POST['select'];    // get data

    echo $str;
}
?>

如何获得我的PHP文件的下拉列表和文本框值,以便我可以使用这些变量形成SQL查询。


你需要使用一个&符号,就像它是一个GET一样。 此外,您应该对文本进行编码,以确保它不包含任何可能具有特殊含义的字符

1
2
3
4
var the_data = ''
    + 'select=' + window.encodeURIComponent(sv)
    + '&text=' + window.encodeURIComponent(searchtext11);
//     ^                    ^^

您不需要手动解码服务器端,因为您已经知道POST数据是x-www-form-urlencoded


添加&amp; 在这个字符串中:

1
var  the_data = 'select='+sv+'&text='+searchtext11;