Javascript readystate从未达到4
在下面的代码中,我尝试将一些数据发布到表中,然后从表中检索几个记录。出于测试目的,我只在php中包含了一个伪查询,它返回一个有效的xml 但是Javascript readystate只能到达readystate 1(两次)。由于php似乎运行良好,我怀疑我编写的javascript脚本不正确。“request”变量有问题吗Javascript readystate从未达到4,javascript,php,Javascript,Php,在下面的代码中,我尝试将一些数据发布到表中,然后从表中检索几个记录。出于测试目的,我只在php中包含了一个伪查询,它返回一个有效的xml 但是Javascript readystate只能到达readystate 1(两次)。由于php似乎运行良好,我怀疑我编写的javascript脚本不正确。“request”变量有问题吗 $(文档).ready(函数(){ $('form').submit(函数(事件){//表单提交时触发 $('#name+.throw_error').empty();/
$(文档).ready(函数(){
$('form').submit(函数(事件){//表单提交时触发
$('#name+.throw_error').empty();//首先清除消息
var name=$('input[name=name]')。val();
var request=!window.XMLHttpRequest?新建ActiveXObject('Microsoft.XMLHTTP'):新建XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4&&request.status==200){
var xml=request.responseXML;
var dynamiclist='';
document.getElementById(“myLink”).innerHTML='';
var posts=xml.documentElement.getElementsByTagName(“post”);
对于(变量i=0;i });代码>在这里使用jQuery是有意义的
然而,最简单的解决方案可能是简单地删除request.open()中的最后一个“true”,这使请求成为一个异步的、非阻塞的请求(无论如何都应该是这样)。MDN还在onreadystatechange上声明,您不应该将其用于同步请求(也称为将“true”作为open()的第三个参数的请求)
来源:尝试阻止触发默认窗体事件:
$('form')。提交(函数(事件){
event.preventDefault();
这可以防止表单元素重新加载浏览器窗口。也许您会发现这个替代解决方案很有帮助:您已经在使用jQuery,为什么不直接使用$。post
?浏览器控制台是否会说您收到了对请求的回复?如果使用以下代码段呢?/loaded | complete/ig.test(request.readyState)
Blender:我以前从未使用过它,但如果这是一个更好的解决方案,我会尝试一下。谢谢,它仍然不起作用,只到达readystate 1。我正在使用jQuery解决方案,但在查找节点时遇到了问题,我想这是由于读取/解析php输出时出现了问题。