Javascript JQuery AJAX在GET请求完成时返回XML
成功返回XML文件(或对象)后,我需要执行代码。不是以前,也不是反复;仅在文件返回后一次 我的代码是否已经完成了我要完成的任务?它似乎在IE中失败了几次,我需要确保它是可靠的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",
$(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
});
})();
});