我创建了一个简单的ajax调用,它使用json从我的数据库中检索数据,如:
$.ajax({
type: "..",
url: "..",
data: ..,
success:function(data){
var arrayData = jQuery.parseJSON(data);
}
});
然后我得到一个数组到arrayData
,但是如何从'成功函数'中使用它呢?
答案 0 :(得分:4)
你必须在ajax调用之前声明arrayData var。
var arrayData;
$.ajax({
type: "..",
url: "..",
data: ..,
success:function(data){
arrayData = jQuery.parseJSON(data);
}
});
我建议您在javascript中阅读一些关于变量范围的内容。
答案 1 :(得分:3)
simshaun已回答了您的直接问题,但我怀疑您可能对AJAX调用的异步性质有疑问,即arrayData
将为undefined
,直到响应从调用服务器和成功函数。
在调用成功函数后,无论你想用arrayData
做什么,都需要在success函数中调用。例如
var arrayData;
$.ajax({
type: "..",
url: "..",
data: ..,
success:function(data){
arrayData = jQuery.parseJSON(data);
doSomethingElse();
}
});
function doSomethingElse() {
/* do something else here with arrayData */
arrayData.doSomething();
}
现在,我们实际上可以完全删除arrayData
$.ajax({
type: "..",
url: "..",
data: ..,
success:function(data){
doSomethingElse(jQuery.parseJSON(data));
}
});
function doSomethingElse(data) {
/* do something else here with the returned data */
data.doSomething();
}
事实上,我们可以走得更远。分配给success属性的所有匿名函数实际上都是调用doSomethingElse
所以我们可以摆脱它并直接调用doSomethingElse
$.ajax({
type: "..",
url: "..",
data: ..,
success: doSomethingElse
});
function doSomethingElse(data) {
/* do something else here with the returned data */
var arrayData = jQuery.parseJSON(data);
}
这更干净/更清晰吗?
答案 2 :(得分:2)
var arrayData;
$.ajax({
type: "..",
url: "..",
data: ..,
success:function(data){
arrayData = jQuery.parseJSON(data);
}
});
答案 3 :(得分:0)
由于其他两个答案表明你必须在成功函数之外声明数组。原因是因为function(){创建了一个内部范围。
答案 4 :(得分:0)
我用过:
$.getJSON("sections/view_numbers_update.php?JsonUpdatedFrom=" + intLastUpdate, function(data) {
$.each(data, function(index, objNumber) {
$('#tr_' + objNumber.intID).find("td").eq(3).html(objNumber.datLastCalled);
$('#tr_' + objNumber.intID).find("td").eq(4).html(objNumber.strStatus);
$('#tr_' + objNumber.intID).find("td").eq(5).html(objNumber.intDuration);
$('#tr_' + objNumber.intID).find("td").eq(6).html(objNumber.blnWasHuman);
});
});
(对于<tr id="tr_<?php echo $arrRecord["intID"] ?>">
等表格。)