我在页面上尝试ajax。但它不起作用,因为if (xmlhttp.readyState==4 && xmlhttp.status==200)
总是错误的。我已经提醒了xmlhttp.readyState
和xmlhttp.status
的值。对于CCD_ 4事件和4&对于CCD_ 5事件分别为0。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
function captcha_check()
{
var code = document.getElementById("captcha").value;
var url = "http://www.opencaptcha.com/validate.php?img='.$captcha_name.'.jpgx&ans="+code;
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
alert(xmlhttp.readyState + " " + xmlhttp.status);
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("captcha_error").innerHTML=xmlhttp.responseText;
return false;
}
}
xmlhttp.open("GET","captcha_check.php?img=abc.jpg&ans="+code,true);
xmlhttp.send();
}
</script>
问题可能是什么,我如何解决它并使AJAX发挥作用。提前谢谢。
正确的调用顺序是:
new XMLHttpRequest
xhr.open()
xhr.onreadystatechange = ...
xhr.send()
在某些浏览器中,调用.open
会清除其上的任何事件处理程序。这允许对同一XHR对象进行干净的重用,这被认为是更高效的内存(但如果你正确地编码以让GC完成它的工作,那也没关系(
所以,只需将.open
调用放在onreadystatechange
分配之前,就可以开始了。
即使您的代码运行得很好,正如注释中所提到的,因为您已经包含了jQuery try:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
function captcha_check() {
var code = document.getElementById("captcha").value;
var url = "http://www.opencaptcha.com/validate.php?img='.$captcha_name.'.jpgx&ans="+code;
jQuery.get("captcha_check.php?img=abc.jpg&ans="+code", function(data) {
alert("Load was performed.");
console.log(data);
});
}
</script>
这听起来就像是从浏览器中直接从文件系统加载的页面而不是从Web服务器发出AJAX请求。由于您正在发出GET请求,浏览器缓存可能也是一个问题。尝试每次在URL上附加一个时间戳,使URL是唯一的:
xmlhttp.open("GET", "captcha_check.php?img=abc.jpg&ans=" + code
+ "&__cachebuster__=" + new Date().getTime());
其次,您需要转义code
变量,以确保查询字符串的安全性:
xmlhttp.open("GET", "captcha_check.php?img=abc.jpg&ans=" + escape(code)
+ "&__cachebuster__=" + new Date().getTime());
最后,请检查您的captcha_check.php文件中是否出现$_POST
,因为这表明您应该发出POST请求,而不是GET请求。
如果:
您直接从文件系统在浏览器中加载页面,AJAX请求将使失败
您为
code
输入了非查询字符串安全字符,然后您得到了一个无效的URL,AJAX请求将使失败captcha_check.php
文件需要POST请求,如果您发出GET请求,AJAX请求将失败。
xmlhttp.open("GET","captcha_check.php?img=abc.jpg&ans="+code,true(;
请检查文件路径,可能是错误的路径。