我有一个SAP Gateway OData-Service和一个本地Tomcat Apache Server。我的SAPUI5客户端部署在Tomcat中,并从SAP Gateway远程服务器请求OData-Webservice。实际上存在跨域域错误。所以我设置了标题" Access-Control-Allow-Origin"在我的OData-Webservice和我的SAPUI5客户端请求与JSONP,但我会收到一个错误,因为SAP网关无法处理JSONP响应。
错误:"未捕获的SyntaxError:意外的令牌:"
错误取决于SAP Gateway与JSONP的不兼容性。
这是来自Web服务的JSON(而不是JSONP)响应。
所以我的问题。是否有可能访问此响应? 我试图通过很多回调来访问,比如成功,错误,失败,完成,总是,完成等等。但没有机会......
感谢和最好的问候
答案 0 :(得分:0)
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(response) {
//this is where you'll get data/response
console.log(response) ;
},
error: function(e) {
console.log(e.message);
}
});
更新
问题在于您的上下文..有一些值,如_1453458442107 =:1
检查并encode。
答案 1 :(得分:0)
如果在odata响应中设置CORS标头“Access-Control-Allow-Origin”,您应该能够使用常规JSON(不带P)访问该服务。
当CORS-Header不可用时,JSONP是一种绕过相同原始策略的解决方法。
如果您的odata服务使用身份验证,则可能需要设置更多CORS标头以使其正常工作。
On MDN您可以阅读有关CORS及其标题的更多信息。
On Wikipedia是关于CORS与JSONP的章节。
你有没有试过以下这样的东西?
$.get({
url:"https://.../sap/opu/odata/sap/ZMOBILAD_SRV/UsernameSet?$format=json",
context: document.body,
cache: false
}).done(function(){
console.log(this);
});