我想从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);
答案 0 :(得分:1)
正确检索数据但由于请求是异步的,因此无法在成功回调之外设置html,将其置于成功回调中并且它将起作用。
当您不确定问题的确定位置以确保成功检索数据时,console.log
数据也是一种很好的做法。
修改 Here是async: 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);
}
});