从数据库检索数据-未定义索引问题(与ajax相关的问题)

时间:2019-06-12 23:48:56

标签: javascript php ajax

我遵循了w3schools上的指南,但是当我从下拉菜单中选择用户时,我无法使脚本返回所需的数据。我刚得到未定义的索引:userdrop 这是脚本(用POST更改了GET,也许这就是我搞砸了)

<script>
function UserInfo(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("POST","testing.php",true);
        xmlhttp.send();
    }
}
</script>

下拉菜单:

<form>
<select name="userdrop" onchange="UserInfo(this.value)">
  <option value="">Select a person:</option>
  <option value="1">Peter Griffin</option>
  <option value="2">Lois Griffin</option>
  <option value="3">Joseph Swanson</option>
  <option value="4">Glenn Quagmire</option>
  </select>
</form>
<br>
<div id="txtHint"><b>Person info will be listed here...</b></div>

以及由于未定义索引而无法为我提供任何结果的php代码

$row = $MMM->Users(intval($_POST['userdrop']));

echo "<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>City</th>
</tr>
<tr>
<td>".$row['user_id']."</td>
<td>".$row['user_name']."</td>
<td>".$row['user_city']."</td>
</tr>
</table>
";

1 个答案:

答案 0 :(得分:0)

function UserInfo(str) {    //method starts with str as an argument
  var string = str;         //str is assigned to string.   
 var http = new XMLHttpRequest();  // create new HttpRequest instance 
 var url = "testing.php";          //the script to call to post data
 var params = 'id=string';          

 http.open("POST", url, true);

 //Send the proper header information along with the request
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

 // Call a function when the state changes.
 http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
 }
 http.send(params);
 }