如何使用jquery在将返回xml的url上发出get请求?

时间:2013-03-08 00:09:11

标签: jquery xmlhttprequest same-origin-policy

我正在尝试访问商店的api并获取xml响应,目前我使用的是xmlhttprequest

function GetInfo()
{
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", "http://partner.tcgplayer.com/x2/phl.asmx/p?pk=TCGTEST&s=New Phyrexia&p=Flameborn Viron", false );
    xmlHttp.send( null );
    alert(xmlHttp.responseText);


}

(jsfiddle here:http://jsfiddle.net/YXRdu/

但我没有取得任何成功。我觉得这可能是由于相同的原始访问策略,但我真的不确定如何解决它。我有谷歌问题,但我不知道如何在我无法访问的远程服务器上实现cors。我知道url是有效的,当我在浏览器中输入它时,我得到了一个xml数据。

我真的不确定我做错了什么,任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

检查服务器是否允许JSONP,它适用于跨域。如果没有,您将必须在服务器端(您自己的服务器)获取XML,然后您可以通过AJAX将其发送到Javascript。

答案 1 :(得分:1)

function GetInfo()
{
    var test = $('#cardname').val();

   var jqxhr = $.get('http://partner.tcgplayer.com/x2/phl.asmx/p?pk=TCGTEST&s=New%20Phyrexia&p=Flameborn%20Viron', function(data) {
alert(data);

}).done(function() { alert("second success"); })
.fail(function() { alert("error"); })
.always(function() { alert("finished"); });
}




GetInfo();

存在跨域问题:

  

XMLHttpRequest无法加载   http://partner.tcgplayer.com/x2/phl.asmx/p?pk=TCGTEST&s=New%20Phyrexia&p=Flameborn%20Viron。   来源http://fiddle.jshell.net不被允许   访问控制允许来源。

您应该尝试使用服务器端方法。