我是网络编程的新手,我并不完全理解一些简单的事情。 假设我们有以下ajax请求:
var records = [];
$.ajax(
{
url : "index",
dataType: 'json',
success: function (response)
{
records = response;
}
});
alert(records.length);//This displays 0
alert(records.length);//This alert correctly displays number of records
问题是数组记录显示为空,如果我在调用ajax后尝试立即使用它们(第一个警告显示零长度,而第二个警告显示正确的长度)。有什么问题以及如何解决?
答案 0 :(得分:3)
您只需将警报置于成功回调中。
var records = [];
$.ajax(
{
url : "index",
dataType: 'json',
success: function (response)
{
records = response;
alert(records.length); // will always be correct
}
});
在您的示例中,行为将是不可预测的,并且将取决于调用返回的速度。
答案 1 :(得分:2)
Ajax中的A代表异步
在HTTP响应返回之前,不会触发成功函数。
当第一个alert
开火时,它还没有回来。在您单击“确定”到alert
所花费的时间内,响应已到达,因此成功函数在第二个alert
触发时运行。 (alert
是阻止功能)。
在发送HTTP请求后,不要立即对成功函数中的数据进行处理。