我有以下功能:
$.ajax({
url: "../../getposts.php"
}).done(function(posts) {
var postsjson = $.parseJSON(posts);
});
如何postsjson
在函数外部使用变量.done()
,或者如何将其声明为全局变量?
我不能将它传递给另一个函数,因为我想稍后使用数组,而不是在 ajax 完成时使用。
我有以下功能:
$.ajax({
url: "../../getposts.php"
}).done(function(posts) {
var postsjson = $.parseJSON(posts);
});
如何postsjson
在函数外部使用变量.done()
,或者如何将其声明为全局变量?
我不能将它传递给另一个函数,因为我想稍后使用数组,而不是在 ajax 完成时使用。
如果您只是在 ajax 调用之外定义变量:
var postsjson;
$.ajax({
url: "../../getposts.php"
}).done(function(posts) {
postsjson = $.parseJSON(posts);
});
然后你可以在外面使用它。同样,如果您只是离开var
,它将在全局范围内声明它,但不建议这样做。
正如 SLaks 所指出的,您将无法立即使用从 AJAX 调用中获得的数据,您必须等待done
函数运行,然后才能将其初始化为任何有用的东西。
很酷的是,从 Ajax 函数返回的 Promise 可以以多种不同的方式使用,这里有一些:
var XHR = $.ajax({
url: "../../getposts.php"
});
function somethingElse() {
XHR.done(function(posts) {
var postsjson = $.parseJSON(posts);
});
}
--
function myAjax(url) {
return $.ajax({
url: url
});
}
function doSomething(url) {
var postsjson = myAjax(url).done(parsePosts);
}
function parsePosts() {
return $.parseJSON(posts);
}
doSomething("../../getposts.php");
ETC...
你需要在调用ajax之前声明一个变量。
简单示例:
var postsjson;
$.ajax({
url: "../../getposts.php"
}).done(function(posts) {
postsjson = $.parseJSON(posts);
});
console.info(postsjson); // Use here for example