如何在函数ajax
之后获取数组。我知道有可能async false
但这不好。我该怎么办?
var visit_time=[];
var phrase=[];
$.ajax({
url: "https://api-metrika.yandex.ru/stat/sources/phrases.json",
data: {
id: "111111",
pretty: "1",
oauth_token: "code_token"
},
dataType: "jsonp",
success: function(data) {
var str = "";
var len = data.data.length
for (var i = 0; i < len; i++) {
visit_time.push(data.data[i].visit_time);
phrase.push(data.data[i].phrase)
}
alert(phrase)
}
});
//get visit_time and phrase
答案 0 :(得分:-1)
您可以在ajax请求成功后执行回调。
function callback(arr) {
// do something with the array
console.log(arr);
}
success: function(data) {
var str = "";
var len = data.data.length
for (var i = 0; i < len; i++) {
visit_time.push(data.data[i].visit_time);
phrase.push(data.data[i].phrase)
}
callback(data);
}
您还可以使用 Promise 。
的想法 var visit_time=[];
var phrase=[];
function callback(arr) {
alert(arr)
console.log(arr);
}
$.ajax({
url: "https://api-metrika.yandex.ru/stat/sources/phrases.json",
data: {
id: "11111",
pretty: "1",
oauth_token: "token"
},
dataType: "jsonp",
success: function(data) {
var str = "";
var len = data.data.length
for (var i = 0; i < len; i++) {
visit_time.push(data.data[i].visit_time);
phrase.push(data.data[i].phrase)
}
callback(phrase); // You have access here
}
});
callback(phrase); // cannot access it as AJAX is asynchronous.
答案 1 :(得分:-1)
由于AJAX请求的异步性质,如果要处理响应,则必须将所述代码置于回调函数中:
success: function(data){
// Only this code will have access to the response data.
}
您可以考虑将代码拆分为函数并从成功回调中调用这些函数。