首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问JSONP请求中的响应数据

访问JSONP请求中的响应数据
EN

Stack Overflow用户
提问于 2016-01-22 18:44:11
回答 2查看 940关注 0票数 0

我有一个SAP Gateway OData-Service和一个本地Tomcat Apache Server。我的SAPUI5客户机部署在Tomcat中,并从SAP Gateway远程服务器请求OData-Webservice。实际上存在跨域错误。所以我在我的OData-Webservice和我的SAPUI5客户端请求中使用JSONP设置了头"Access-Control-Allow-Origin“,但是我会得到一个错误,因为SAP Gateway不能处理JSONP响应。

我的代码:

错误:“未捕获SyntaxError:意外的令牌:”

该错误取决于SAP网关与JSONP的不兼容性。

如果我查看网络请求,我会找到这个:

它是来自not服务的JSON (而不是JSONP)响应。

所以我的问题是。是否有可能访问此响应?我尝试通过许多回调来访问,比如成功、错误、失败、完成、始终、完成等等。但是没有机会..。

感谢并致以最良好的问候

EN

回答 2

Stack Overflow用户

发布于 2016-01-22 19:32:21

代码语言:javascript
复制
$.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

票数 0
EN

Stack Overflow用户

发布于 2016-01-24 02:27:42

如果您在odata响应中设置了CORS头" access -Control-Allow-Origin“,您应该能够使用常规JSON (没有P)访问服务。

当CORS-Header不可用时,JSONP是一种绕过同源策略的解决方法。

如果您的odata服务使用身份验证,则可能需要设置更多的CORS头才能使其正常工作。

On MDN你可以阅读更多关于CORS和它的标题的内容。

On Wikipedia是关于CORS与JSONP的章节。

那么你有没有尝试过下面这样的方法呢?

代码语言:javascript
复制
$.get({
    url:"https://.../sap/opu/odata/sap/ZMOBILAD_SRV/UsernameSet?$format=json",
    context: document.body,
    cache: false
    }).done(function(){ 
        console.log(this); 
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34944762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档