我仍然在尝试使用从php获取的数组时遇到一些问题。问题是,当我得到一个数组时,我无法使用“成功函数”。所以这就是正在发生的事情。
我创建了一个名为“langs”的var来保存数组的信息:
var langs=[];
然后,当我使用console.log获取打印数组的INSIDE函数成功信息时,我的代码如下:
$.ajax({
type: 'POST',
url: '/ws/languagesForJs',
dataType: 'json',
success: function(result) {
langs=result;
console.log(result)
},
});
很棒!!我可以看到数组的信息。它看起来像这样:
Object {es: Object, en: Object}
en: Object
lang_ext_name: "en_US"
lang_id: 2
lang_iso: "en"
lang_name: "Inglés"
lang_url: "en"
__proto__: Object
es: Object
lang_ext_name: "es_PE"
lang_id: 1
lang_iso: "es"
lang_name: "Español"
lang_url: "es"
__proto__: Object
__proto__: Object
但是,当我使用console.log获取打印数组的信息时OUTSIDE功能成功:
$.ajax({
type: 'POST',
url: '/ws/languagesForJs',
dataType: 'json',
success: function(result) {
langs=result;
},
});
console.log(result)
只返回;
[]
真诚地,我不知道为什么会这样。也许我错过了一些函数的理论或其他东西。我在网上寻找信息;然而,似乎没有人需要在成功函数之外的数组。我没有找到任何有关它的信息。
我希望有人可以帮助我。感谢
顺便说一句:抱歉我的英语不好。这不是我的母语。答案 0 :(得分:3)
这里有两个问题。
答案 1 :(得分:1)
result
是一个局部变量,你需要在ajax调用之外创建一个引用,这样你就可以毫无问题地引用它。
试试这个:
var myResult;
$.ajax({
type: 'POST',
url: '/ws/languagesForJs',
dataType: 'json'})
.done(function(result) {
myResult = result; // save a reference
langs = result;
})
.always(function() {
console.log(myResult);
});
我还应该提到success
已被弃用,您应该转而使用done
。 always
回调被称为名称为始终,因此您可以放置异步调用完成时需要执行的代码。
希望它有所帮助。