JSONP请求返回正确的值但未在回调函数中显示

时间:2016-06-20 02:22:29

标签: javascript jquery json jsonp jquery-callback

感谢这个论坛,我能够通过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>

2 个答案:

答案 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;
}