从Ajax Jsonp中获取数据

时间:2017-11-30 18:46:00

标签: javascript jquery ajax jsonp

我想从Ajax Jsonp中获取数据。
为什么不使用这个应用程序?
请帮助。

var res;
  $.ajax({
    url: 'https://api-metrica.yandex.com/analytics/v3/data/ga?end-date=today&ids=ga%3A35416355&dimensions=ga:pagePath&metrics=ga:users&filters=ga:pagePath==/p/etkinlikler.html&start-date=2015-10-25&oauth_token=AQAAAAAVs-uLAASpEAf-MmJK_kHgpU9Fwv8WArM',
    dataType: 'jsonp',
    async: false,
    success: function(result) { 
        res = result.totalsForAllResults["ga:users"];
        }
    });
    $("div").html(res);

https://jsfiddle.net/q6vfgemp/

3 个答案:

答案 0 :(得分:1)

正确检索数据但由于请求是异步的,因此无法在成功回调之外设置html,将其置于成功回调中并且它将起作用。

当您不确定问题的确定位置以确保成功检索数据时,console.log数据也是一种很好的做法。

修改 Hereasync: false选项不起作用的原因,请查看已接受的答案以获取详细信息。

答案 1 :(得分:0)

在JSONP中,您应该向请求添加回调参数。 响应将是一个脚本,用所请求的数据调用您的回调。

所以,你应该调用这样的URL:

http://domain.ext/?callback=xxx

你应该有一个名为“xxx”的函数:

function xxx(data) {
    // Here you can manage the received data 
}

此外,请求的资源应支持JSONP,如果不支持,则不会在回调中收到任何内容。

答案 2 :(得分:0)

由于请求是异步的,因此您的代码会在实际检索结果之前设置“div”。为了确保您检索结果,然后然后设置div,请执行以下操作:

  $.ajax({
    url: 'https://api-metrica.yandex.com/analytics/v3/data/ga?end-date=today&ids=ga%3A35416355&dimensions=ga:pagePath&metrics=ga:users&filters=ga:pagePath==/p/etkinlikler.html&start-date=2015-10-25&oauth_token=AQAAAAAVs-uLAASpEAf-MmJK_kHgpU9Fwv8WArM',
    dataType: 'jsonp',
    async: false,
    success: function(result) { 
        res = result.totalsForAllResults["ga:users"];
        $("div").html(res);
        }
    });
相关问题