Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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
Javascript JQuery AJAX在GET请求完成时返回XML_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript JQuery AJAX在GET请求完成时返回XML

Javascript JQuery AJAX在GET请求完成时返回XML,javascript,jquery,ajax,Javascript,Jquery,Ajax,成功返回XML文件(或对象)后,我需要执行代码。不是以前,也不是反复;仅在文件返回后一次 我的代码是否已经完成了我要完成的任务?它似乎在IE中失败了几次,我需要确保它是可靠的 $(document).ready(function(){ (function GetFile(){ $.ajax({ type: "GET", url: "Produce.xml", dataType: "xml",

成功返回XML文件(或对象)后,我需要执行代码。不是以前,也不是反复;仅在文件返回后一次

我的代码是否已经完成了我要完成的任务?它似乎在IE中失败了几次,我需要确保它是可靠的

$(document).ready(function(){
    (function GetFile(){
        $.ajax({
          type: "GET",
          url: "Produce.xml",
          dataType: "xml",
          cache: false,
          success: function(result) {
                alert("XML File is loaded!");
                alert(result);
                },      
            async: true
          });
    })();
});

我知道有
onerror
代码和
readystatechange
值可以检查和验证。。。在轮询服务器查找XML文件时是否应该检查这些值

async:true之后删除逗号

此外,如果您不打算再次调用,那么GetFile函数将立即执行,您也可以使用anonymous或同时删除该函数

$(document).ready(function(){
        $.ajax({
          type: "GET",
          url: "Produce.xml",
          dataType: "xml",
          cache: false,
          success: function(result) {
                alert("XML File is loaded!");
                alert(result);
                },      
            async: true
          });
});
这是作为原始询问者的编辑添加的,我已将其转换为社区wiki答案,因为它应该是答案,而不是编辑

由于@AndrewDouglas的建议,修复了它,下面是新代码(非常有效):


最后一个注释是,您应该能够将
setTimeout(GetFile,5000)
更改为
setInterval(GetFile,5000)
,然后它将持续轮询您的XML文件。不过,在
success
部分这样做会更有意义;在我粘贴它之前,有一些额外的代码在那里。看起来,即使我告诉它在成功时执行我的函数,但有时它没有。在我的“真实”编码版本中,它将成功跳过函数;这可能是由于一个错误吗?它看起来很不可靠,我希望它更健壮。您还应该包括一个错误处理程序。如果它跳过了成功,那么它可能是成功的,也可能是错误的,因为没有错误回调。添加了以下代码
error:function(xhr,ajaxOptions,thrownError){alert(xhr.status);alert(thrownError);},
并等待它触发。我是否应该在失败时重新调用“GetFile”函数,或者使用计数器超时?我会试一试的。我编辑了我的主代码以反映一些变化,但它似乎必须先经过“同行评审”。也许我问的问题太多了!我在我的
错误中添加了以下行:function
-
setTimeout(GetFile(),5000)但它仍在有限范围内循环。我也尝试了
setInterval
,但没有什么不同。
$(document).ready(function(){
(function GetFile(){
    $.ajax({
      type: "GET",
      url: "Produce.xml",
      dataType: "xml",
      cache: false,
      success: function(result) {
            alert("XML File is loaded!");
            alert(result);
        },
      error:function (xhr, ajaxOptions, thrownError){
            z++;
            alert(xhr.status);
            alert(thrownError);
            setTimeout(GetFile, 5000);
            console.log("Error " +z+": " + thrownError);
        },              
            async: true
        });
    })();
});