使用jquery获取跨站点XML响应

时间:2012-02-17 16:40:54

标签: javascript jquery jsonp cross-site

我正在尝试从不属于我的服务中获取一些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>

由于

1 个答案:

答案 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。