我正在尝试从不属于我的服务中获取一些xml信息。 基本上,用户将对其他服务进行身份验证,我的脚本应该通过跨站点使用身份验证cookie获取信息。
我正在使用jquery这样做,我可以看到我想要处理的响应是由服务返回的(通过firebug),事情是我正在使用jsonp来执行调用,所以jquery返回解析错误。
我已经尝试过我遇到的所有解决方案来执行此类操作,例如YQL和代理服务器。
我在这里的沮丧是我看到了我想要的回复,但jquery只是不给我原始信息。
我知道我正在调用一个期望json响应的函数,但是没有任何解决方法或其他方法吗?像xmlp xD。
$.ajax(
{
url: "serviceurl",
dataType: 'jsonp', //I've tried 'jsonp xml'
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function()
{
alert('Load was performed.');
},
error: function(jqxhr,error)
{
alert('Failed!');
},
});
编辑:这是服务器的输出
<User>
DVD_PT
</User>
<Apps>
<App>
<name>Last.fm Scrobbler</name>
</App>
</Apps>
由于
答案 0 :(得分:0)
除非另一个域支持CORS,否则无法从跨域源请求XML。
您必须使用某种代理,例如YQL,正如您已经提到的那样。
将数据类型设置为JSONP时看到的响应位于<script>
标记内。例如,你得到了这个:
<script src="http://example.com/note.xml"></script>
其中note.xml是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
当然会抛出错误,因为它不是有效的javascript。