Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接收AJAX HTTP响应代码为0_Ajax_Httpresponse - Fatal编程技术网

接收AJAX HTTP响应代码为0

接收AJAX HTTP响应代码为0,ajax,httpresponse,Ajax,Httpresponse,我有一个非常简单的AJAX和PHP代码。当通过AJAX调用PHP时,它会收到响应代码0。PHP代码已成功运行,但我无法获得响应。此状态“0”表示什么?如何解决此问题 function confirmUser(id) { xmlhttp=GetXmlHttpObject(); regid = id; if (xmlhttp==null) { alert ("Browser does not support HTTP Request"); r

我有一个非常简单的AJAX和PHP代码。当通过AJAX调用PHP时,它会收到响应代码0。PHP代码已成功运行,但我无法获得响应。此状态“0”表示什么?如何解决此问题

function confirmUser(id)
{
    xmlhttp=GetXmlHttpObject();
    regid = id;
    if (xmlhttp==null)  {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="confirm.php";
    url=url+"?id="+id;
    url=url+"&a=confirm";
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            $("#txtHint" + regid).text("Awaiting confirmation");
        } else {
            alert (xmlhttp.status); //this shows '0'
        }
    };
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
}
这就是我使用的javascript。请原谅,我本应该再加些什么。也告诉我我错过了什么。 我感谢你的帮助

GetXmlHttpObject函数:

function GetXmlHttpObject()
{
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}

这是您的readyState代码

0. Uninitialized
1. Set up, but not sent
2. Sent
3. In flight
4. Complete
(来源:)

您是否经常遇到readyState为0的问题?如果是这样,则表示您的请求尚未发送,尽管我可以在您的示例“xmlhttp.send(null)”中看到一行代码


我预计,在调用send之前,您将得到一个0,但在这之后,状态代码将不同。如果稍等一下会发生什么?

在过去处理XMLHttpRequests时,我发现本地处理的文件通常返回状态0。当我看到这个问题时,我四处搜寻了一下,并在以下几页中找到了对这一点的确认:


    • 我知道人们可能不想听,但这正是JS框架的用途。当您可以通过jQuery执行一个简单的AJAX调用时,为什么还要处理自定义AJAX调用的各种浏览器倾向和灾难呢

      基本上,你是在无缘无故地重新发明轮子。让php返回JSON数据,如果需要测试,则在成功代码中嵌入一个变量

      <script src="jquery.js"></script>
      <script>
        $.get("myphp.php", { id : "yes", blah : "stuff" }, function(data) {
        if (data.success == 1) {
          alert("got data");
        } else {
          alert("didn't get data");
        }
      },"json");
      </script>
      
      
      $.get(“myphp.php”,{id:“yes”,blah:“stuff”},函数(数据){
      如果(data.success==1){
      警报(“获取数据”);
      }否则{
      警报(“未获取数据”);
      }
      }“json”);
      

      Boom,您现在有了跨浏览器AJAX。

      如果您请求HTTPS资源并且握手失败(例如无效证书),则可能会发生这种情况。特别是,如果从浏览器外部使用XML请求对象,错误可能并不明显。

      调试看不到的代码确实很困难。告诉我们错误的原因。请将您的代码放在这里,以便有人能够帮助您。我现在已经添加了代码。只是我看到问题的一部分…它可能意味着很多事情。请看这个答案:我只得到一次状态为0,即在末尾;应该是200的位置。你是在谈论readyState还是Status?请求完成时,状态应为200,readyState为4。我建议使用Firebug来跟踪请求——它将帮助您诊断任何问题,因为它将在“Net”选项卡上显示AJAX请求和任何响应。readyState当然是4。让我试试firebug。你能展示一下“GetXmlHttpObject()”方法吗,因为其中可能有问题-它至少可以让我重新创建你的代码来查看问题。也许可以重新使用你的示例来使用类似的东西。。。你能通过jquery发布一个关于使用ajax的更多细节的链接吗?会很有帮助的事实上我的例子就是一个有效的例子。访问更多的例子,有很多。我发布的示例的基础是get的$.get()或post请求的$.post()。第一个参数是正在加载的文件名,该文件的内容将填充已定义回调函数的数据变量。上面的例子是,如果返回文件将传递JSON,但是如果您只是省略“JSON”,那么它将返回完整的文档文本。这是IBM的一份文件-。