从具有静态回退值的webservice获取XML

时间:2012-06-07 16:23:01

标签: javascript jquery ajax

我试图使用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 );
}
});

1 个答案:

答案 0 :(得分: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 );

你在xmlDoc前面缺少 var (会创建一个全局变量),更重要的是,在{{之后你有逗号(,)而不是分号(;) 1}}声明。