【发布时间】:2016-12-30 04:20:49
【问题描述】:
我正在尝试使用 jQuery 和 SAP 后端系统提供的 ODATA REST 服务来执行 AJAX。
$.ajax({
type: 'GET',
url: 'http://sapxx.sapms/sap/opu/odata/.../',
async: true,
dataType: 'jsonp',
username: 'username',
password: 'password',
crossDomain: true,
success: function() {
alert('Done.');
},
error: function() {
alert('Error.');
},
});
请求返回状态 200,我从服务器得到响应,该响应称为“?callback=jQuery3100687...”,并包含 xml 代码。所有这些都在 Chrome 调试器中可见。但是在成功的 HTTP 请求之后,我得到了上述错误
Uncaught SyntaxError: Unexpected token <
我怀疑错误是由于请求中设置为“jsonp”的“dataType”参数造成的。有没有办法解决这个错误?服务器只能使用 XML 格式进行响应。该请求仅在 dataType 设置为“jsonp”时才有效,我猜是因为它启用了 CORS。发送请求后,尽管状态为 200,但我收到“错误”警报。
【问题讨论】:
-
您的数据回复无效,请查看您的回复。
-
您不能神奇地让服务器将响应更改为 JSONP。服务器需要这样做。 CORS 的唯一解决方法是在您的服务器上使用代理或在其他设置 CORS 标头或返回 JSONP 的服务器上使用代理。
-
有没有办法只从响应中提取 XML 内容?我可以在调试器中看到响应,尽管存在 XML 问题,难道不应该有办法访问它吗?
标签: javascript jquery ajax http