如何使用 jquery 处理从 jsonp 返回的 xml?

Posted

技术标签:

【中文标题】如何使用 jquery 处理从 jsonp 返回的 xml?【英文标题】:How to process xml returned from jsonp using jquery? 【发布时间】:2011-03-01 21:19:27 【问题描述】:

我使用以下 jquery 返回位于同一子域中的 xml:

$.getJSON(myurl, function(data) 
 
  debugger; 
  alert(data); 
);

现在,每当我在 firebug 中运行它时,我都会在 firebug 中收到一个 js 错误: Missing ;声明之前。返回的数据如下所示:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="somenamespace">...somedata...</string>

返回了我想要的数据,但是不知道怎么用。我需要访问 somedata,但我无法访问。 Firebug 甚至不会在函数中停止。我该如何正确进行?

【问题讨论】:

【参考方案1】:

看起来好像您希望返回 XML,但您正在调用需要 JSON 的函数。 XML 和 JSON 是两种不同的数据编码方式。

如果您想将 XML 作为字符串获取,则可以使用 jQuery 的 get 函数。这需要您自己解析字符串以提取...somedata...

但如果您想用 jQuery 处理 XML 响应的内容,那么最好的办法是使用 ajax 函数:

$.ajax(
    url: myurl,
    dataType: 'xml',
    success: function(data) 
        debugger;
        alert(data);
        // untested:
        var theValue = $('string', data).text();
    
);

【讨论】:

谢谢,当 url 位于不同的域时,这是否有效? 我在使用 xml 数据类型时得到 403。 api.jquery.com/jQuery.ajax/#dataType 例如,如果您希望将文本响应视为 XML,请使用“text xml”作为数据类型。您还可以发出 JSONP 请求,将其作为文本接收,并由 jQuery 解释为 XML:“jsonp text xml”。类似地,诸如“jsonp xml”之类的速记字符串将首先尝试从 jsonp 转换为 xml,如果失败,则从 jsonp 转换为文本,然后从文本转换为 xml。 @jhanifen 理论上 'jsonp text xml' 应该可以工作,但由于某种原因它不能并返回 Uncaught SyntaxError: Unexpected token &lt; @hitautodestruct 同意。

以上是关于如何使用 jquery 处理从 jsonp 返回的 xml?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery jsonp跨域请求

jQuery jsonp跨域请求详解

jQuery使用JSONP实现跨域请求

如何通过 jQuery AJAX 从使用 OAuth 1.0 身份验证的 Upwork API 请求 JSONP 文件?

如何使用 jquery 读取 Jsonp [关闭]

使用jquery jsonp返回错误回调函数没有被调用