在AJAX调用中填充外部数组
Fill external array in AJAX call
我正试图编写一个通用函数,它将填充我通过服务器的数据传入的任何数组。下面的代码确实正确地填充了函数内的数组,但是当我试图传入'characters'数组时,它不会接受它。
下面是函数调用:
$(document).ready(function() {
databaseConnect("loadCharacter.php", characters);
document.write(characters[0]); //This spits out 'undefined'
});
函数是这样的:
function databaseConnect (file, array) {
if (login == true) {
$.ajax({
type: "POST",
url: file,
data: {id : identi},
success: function(data, array) {
array = data.split('-');
i = 0;
while(array[i]) {
array[i] = JSON.parse(array[i]);
++i;
}
},
});
} else {
document.write("Dude. You're not logged in.");
}
}
您需要了解异步是如何工作的。您的代码执行如下:
- databaseConnect被称为 ajax调用被发送到服务器
- databaseConnect函数将控制权返回给主$.ready()函数
- 文档。Write被调用——但此时字符数组中没有任何内容。执行前4步最多需要几十微秒,而来自服务器的ajax响应需要更长的时间才能返回。
- …很久以后,ajax返回并填充字符数组。
你应该使用回调,如
$(document).ready(function () {
databaseConnect("loadCharacter.php", processCharacters);
});
function processCharacters (characters) {
document.write(characters[0]);
}
function databaseConnect (file, callback) {
if (login == true) {
$.ajax({
type: "POST",
url: file,
data: {id : identi},
success: function(data, array) {
var array = data.split('-');
i = 0;
while(array[i]) {
array[i] = JSON.parse(array[i]);
++i;
}
callback(array);
},
});
} else {
document.write("Dude. You're not logged in.");
}
}
相关文章:
- 从Haml调用外部javascript中的ruby数组
- 读取外部local.txt文件以将数据加载到数组中
- 将对象值替换为外部数组中的值
- 在外部.js文件中使用全局php数组
- 从外部函数(数组)了解返回函数(x)
- 在外部JSON文件中存储对象数组
- 使用javascript/jquery将外部文件添加到$_FILES数组中
- 将一个外部二维数组映射到另一个二维数组(javascript)
- Polymer:当数组中的对象被外部代码修改时,更新dom重复元素
- 将 php 数组传递给外部 javascript 文件
- 数组填充外部函数 - 不可访问的成员
- 从 API 到数组的外部 JSON
- JavaScript:如何删除外部数组内的所有方括号
- 从forEach回调中修改外部数组变量
- Javascript在循环中向外部数组添加对象
- 在AJAX调用中填充外部数组
- 在Mustache.js / ICanHaz中从内部数组访问外部数组值
- 我可以使用JavaScript JSON.使用外部数组进行解析
- Javascript语法-为什么函数不能识别已声明和填充的外部数组
- ngOptions在AngularJS中从内部和外部数组绑定