我在我的网页上尝试ajax。但它不起作用,因为if (xmlhttp.readyState==4 && xmlhttp.status==200)
总是错误的。我已提醒xmlhttp.readyState
和xmlhttp.status
的值。 xmlhttp.open
事件和4&事件的值分别为1和0。 xmlhttp.close
事件分别为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正常运行。提前谢谢。
答案 0 :(得分:3)
正确的通话顺序是:
new XMLHttpRequest
xhr.open()
xhr.onreadystatechange = ...
xhr.send()
在某些浏览器中,调用.open
会清除其上的所有事件处理程序。这样可以干净地重复使用相同的XHR对象,这可能会带来更高的内存效率(但如果您正确编写代码以使GC完成其工作,则无关紧要)
所以,只需在.open
作业之前拨打onreadystatechange
来电,就可以了。
答案 1 :(得分:1)
即使您的代码运行正常,如评论中所述,因为您已经包含的jQuery尝试:
<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>
答案 2 :(得分:0)
这听起来好像是从浏览器中直接从文件系统加载的页面发出AJAX请求,而不是从Web服务器发出。由于您要发出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
输入非查询字符串安全字符,然后您的网址无效,并且AJAX请求将失败
captcha_check.php
文件需要POST请求并发出GET请求,AJAX请求将失败。
答案 3 :(得分:0)
xmlhttp.open(“ GET”,“ captcha_check.php?img = abc.jpg&ans =” + code,true);
请检查文件路径,也许是错误的路径。