感谢这个论坛,我能够通过JSONP和回调函数概念访问跨域rest api。
我的要求是以HTML格式显示从我的Web服务返回的JSON输出。 我正在调用REST API,我得到了正确的输出(开发人员工具),但我没有在代码中的任何变量中得到它。
回调函数中的数据变量没有得到任何值。 如果我分析开发人员工具,输出将附加一个URI http://xxxx:8000/sap/bc/zrest_demo?sap-client=200&callback=&callback=restapi&_=1466389824755
我相信的原因是,我发现回调函数首先被触发,然后后端的Web服务被调用。我们如何先调用Web服务然后执行回调方法。
以下是我的代码:
<body>
<div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<button onclick="callSAPRestService('OK')">Click me</button>
<script>
function callSAPRestService(value1)
{
$.ajax({
url: "http://xxxx:8000/sap/bc/zrest_demo?sap-client=200&callback=",
dataType: 'jsonp',
jsonpCallback: 'restapi',
jsonp: 'callback',
});
}
function restapi(data) {
alert(data);
}
</script>
</div>
</body>
答案 0 :(得分:0)
您可能需要一个单独的函数来迭代它。
$.ajax({
type: 'GET',
url: 'http://xxxx:8000/sap/bc/zrest_demo?sap-client=200&callback=',
data: {
query: value,
cb: 'callback'
},
dataType: 'jsonp',
});
在这种情况下,cb: 'callback'
是您的函数的名称。
答案 1 :(得分:-1)
为什么不在呼叫成功时返回数据?例如:
callRestService: function() {
var result = null;
$.ajax({
url: 'someurl',
type: 'get',
dataType: 'jsonp',
success: function(data) {
result = data;
}
});
return result;
}