我正在尝试发出ajax请求,但我要发送的参数无法传输。所以我有user.php
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
document.write(str);
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">John Smith</option>
<option value="2">Lois Griffin</option>
<option value="3">Joseph Swanson</option>
<option value="4">Glenn Quagmire</option>
</select>
</form>
这似乎可以正确检索该值。如果我选择Joseph Swanson
,则3
显示正常。但是当我去getUser.php
<?php
$q = intval($_GET['q']);
var_dump($q);
?>
我int 0
每次都得到。问题是什么?
分配为intval之前,请检查该值是否为数字。这是来自PHP文档:
返回值
成功时为var的整数值,失败时为0的整数值。空数组返回0,非空数组返回1。
最大值取决于系统。32位系统的最大有符号整数范围为-2147483648至2147483647。因此,例如,在这样的系统上,intval('1000000000000')将返回2147483647。64位系统的最大有符号整数值为9223372036854775807。
字符串很可能返回0,尽管这取决于字符串的最左边字符。适用整数转换的通用规则。
我建议使用AJAX代替JQuery,在学习时更容易掌握。
//add JQuery//
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
function showUser(str) {
$(function() {
$.ajax({
url: "/getuser.php", //assumes file is in root dir//
type: "post",
data: "q="+str,
processData: false,
success: function(response) {
alert ("processed"); //alerts that PHP processed the request//
$("#txtHint").html(response); //inserts echoed data into div//
}
});
});
}
</script>
然后在PHP文件中,尝试添加...
echo $_POST['q'];
exit;
这至少可以告诉您他们在说话。但它不会在屏幕上显示,您需要查看开发人员工具->网络->响应(但也应位于中#txtHint
)。如果收到响应,请删除该响应并正常尝试。
编辑:
还要检查开发人员工具中的“网络”标签以获取请求,以确保已发送请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句