dav*_*mcd 1 javascript arrays ajax jquery
我正在尝试关注代码,但只在警告框中显示"未定义".任何人都知道如何在.ajax之外实际填充数组?
$(document).ready(function() {
var reviewArray = new Array();
getReviews();
alert(reviewArray[0]);
});
function getReviews()
{
$.ajax({
type : 'GET',
url : 'reviewbox.php',
dataType : 'json',
success : function ( data ) {
$.each( data.reviews, function( i, itemData ) {
reviewArray[i] = itemData.review;
});
},
error : function ( XMLHttpRequest, textStatus, errorThrown) {
var err = "An error has occured: " + errorThrown;
$("body").append(err);
}
});
}
Run Code Online (Sandbox Code Playgroud)
你有两个问题:
alert被执行时,阵列中不填充尚未(Ajax调用还不回).reviewArray不在任何(父)范围内getReviews(即不能从该函数访问).放入alert回调:
$(document).ready(function() {
getReviews(function(reviewArray) {
alert(reviewArray[0]);
});
});
function getReviews(callback) {
$.ajax({
/*...*/
success : function (data) {
var reviewArray = [];
$.each( data.reviews, function( i, itemData ) {
reviewArray[i] = itemData.review;
});
callback(reviewArray);
},
/*...*/
});
}
Run Code Online (Sandbox Code Playgroud)
如果你想reviewArray事先声明,你还必须getReviews在ready回调中定义:
$(document).ready(function() {
var reviewArray = [];
getReviews(function() {
alert(reviewArray[0]);
});
function getReviews(callback) {
$.ajax({
/*...*/
success : function (data) {
$.each( data.reviews, function( i, itemData ) {
reviewArray[i] = itemData.review;
});
callback();
},
/*...*/
});
}
});
Run Code Online (Sandbox Code Playgroud)
但是这样,应用程序的实际流程可能会更加混乱.
| 归档时间: |
|
| 查看次数: |
12985 次 |
| 最近记录: |