0

我正在尝试使用 jQuery $.ajax 调用从 Web 服务返回 xml。如果对该 Web 服务的调用失败,无论出于何种原因,我都有一些我想使用的静态 xml。我正在尝试使用 timeout 属性来告诉我调用是否失败,并将 xml 解析逻辑放入我的错误函数中。我知道 xml 的解析工作正常,因为我已经在删除 ajax 调用的情况下对其进行了测试。当我添加带有虚拟 url 的 ajax 调用以强制出错时,$xml var 永远不会被设置。有什么想法吗?

var navXml = '<?xml version="1.0" encoding="utf-8" ?><book><chapter id="1"></book>'; //static xml here
var serviceUrl = 'http://1234lkjasdf/test'; //bad service url to test failure
var $xml;

$.ajax({
type: 'GET',
dataType: 'xml',
url: serviceUrl,
timeout: 10,
success: function(data, status){
    //set $xml var to xml data returned
    $xml = data;
},
error: function (req, status, error){
    //set $xml var to xml parsed from static value
    xmlDoc = $.parseXML( navXml ), 
        $xml = $( xmlDoc );
}
});
4

1 回答 1

1

编辑

看起来 $.ajax 错误处理程序中的任何错误都会默默地失败。您的 XML 中有错误。您的章节标签未关闭。它需要是:

<chapter id="1" />

当我修复 XML 中的错误时,它可以工作。这是一个小提琴:http: //jsfiddle.net/Pzdv5/1/


您的错误处理程序需要如下所示:

//set $xml var to xml parsed from static value
var xmlDoc = $.parseXML( navXml ); 
$xml = $( xmlDoc );

您在前面缺少varxmlDoc(将创建一个全局变量),更重要的是,您在xmlDoc声明后有逗号 (,) 而不是分号 (;)。

于 2012-06-07T16:33:10.993 回答