如何使用 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 <
@hitautodestruct 同意。以上是关于如何使用 jquery 处理从 jsonp 返回的 xml?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 jQuery AJAX 从使用 OAuth 1.0 身份验证的 Upwork API 请求 JSONP 文件?