【问题标题】:JSONP Request returning correct value but not showing in Callback FunctionJSONP 请求返回正确值但未在回调函数中显示
【发布时间】:2016-10-21 04:43:07
【问题描述】:

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

【问题讨论】:

  • 您的回复中是否有一些重音字符,例如“é”或“à”?如果是,则应设置 utf-8 响应参数
  • 您是否尝试过在$.ajax() 选项中指定success : restapi
  • 感谢您的回复。我发现输出来自一个添加的 URI &callback=restapi&_=1466389824755 添加了原始 URI

标签: javascript jquery json jsonp jquery-callback


【解决方案1】:

为什么不直接在调用成功的时候返回数据呢?例如:

callRestService: function() {
    var result = null;
    $.ajax({
        url: 'someurl',
        type: 'get',
        dataType: 'jsonp',
        success: function(data) {
            result = data;
        }
    });
   return result;
}

【讨论】:

  • 结果变量返回 Null,我仍在扩展 URI 中获取数据:http://XXXX:8000/sap/bc/zrest_demo?sap-client=200&callback=jQuery16202293787001975638_1466390509710&_=1466390513676跨度>
【解决方案2】:

您可能需要有一个单独的函数来迭代它。

$.ajax({
   type: 'GET',
   url: 'http://xxxx:8000/sap/bc/zrest_demo?sap-client=200&callback=',
   data: {
      query: value,
      cb: 'callback'
    },
   dataType: 'jsonp',
});

在这种情况下,cb: 'callback' 是您的函数的名称。

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 2013-12-07
    • 2016-02-04
    • 2011-09-27
    • 2014-04-19
    • 2012-03-26
    • 2017-01-01
    • 2019-12-04
    • 2017-12-30
    相关资源
    最近更新 更多