我试图使用AJAX(post请求)调用eBay FindProducts API,但是遇到了以下错误:
XMLHttpRequest无法加载http://open.api.ebay.com/shopping?callname=FindProducts.Access-Control-Allow-Origin不允许来源http://localhost.com/test.php.
我的代码:
$.ajax
({
type: "POST",
url: 'http://open.api.ebay.com/shopping?callname=FindProducts',
dataType: ($.browser.msie) ? "text" : "xml",
contentType: 'application/x-javascript',
crossDomain : true,
data: {
'X-EBAY-API-APP-ID' : 'ebayAppId',
'X-EBAY-API-VERSION': '771',
'X-EBAY-API-SITEID': '0',
'X-EBAY-API-REQUEST-ENCODING': 'NV',
'X-EBAY-API-RESPONSE-ENCODING': 'json',
'QueryKeywords' : '753759971632',
'MaxEntries' : '3'
},
success: function (result) {
alert('success');
alert(result);
},
error: function (data) {
alert((data));
}
})
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个错误.
我尝试过设置dataType : jsonp(我知道正在检索XML,但要解决错误,我将其设置为jsonP).它工作正常,但jQuery无法解析XML,因为json响应是预期的.
如果您添加&responseencoding=JSON到您的URL,您将根据文档获得JSON响应
更新
工作示例.我所做的是我改为dataType:'jsonp'添加jsonp:'callbackname'.因为jQuery默认调用回调参数callback,但eBay期望它被调用callbackname.您需要做的是将参数添加到数据映射中.确保使用正确的参数名称,检查文档并使用URL方法而不是header方法.希望这可以帮助.