ajax异步执行还没执行到 RowAndColumn=data;就先执行alert
改成同步的或放回调里var RowAndColumn="aaaaa";
$.get(url, {type:"getTable",attribute:"RowAndColumn"},function(data)
{
RowAndColumn=data;
alert(RowAndColumn+" first ");
alert(RowAndColumn+" second");
});
var RowAndColumn="aaaaa";
$.ajax({
url: url,
async:false,
data:{type:"getTable",attribute:"RowAndColumn"},
success:function(data) {
RowAndColumn=data;
}
});
alert(RowAndColumn+" first ");
alert(RowAndColumn+" second");
改成同步的或放回调里var RowAndColumn="aaaaa";
$.get(url, {type:"getTable",attribute:"RowAndColumn"},function(data)
{
RowAndColumn=data;
alert(RowAndColumn+" first ");
alert(RowAndColumn+" second");
});
var RowAndColumn="aaaaa";
$.ajax({
url: url,
async:false,
data:{type:"getTable",attribute:"RowAndColumn"},
success:function(data) {
RowAndColumn=data;
}
});
alert(RowAndColumn+" first ");
alert(RowAndColumn+" second");
它会先执行alert(RowAndColumn+" first ");弹出aaaaa的对话框,
对话框从弹出到用户让其关闭肯定要一定的时间,这段时间function(data){RowAndColumn=data;}就应该执行完了,之后再执行alert(RowAndColumn+" second");时就有了新的值。解决方法是var RowAndColumn="aaaaa"; $.get(url, {type:"getTable",attribute:"RowAndColumn"},function(data)
{
RowAndColumn=data;
cst();
});function cst()
{
alert(RowAndColumn);
}或者$.get()改成同步的方法,
当你的Ajax执行的快时返回来值了恰好第八行代码还没有执行呢,
那么RowAndColumn将被Ajax重新赋值(赋值成Ajax返回来的值data)
如果Ajax执行的慢了那么在执行第八行代码时Ajax还没有来得及返回来值呢
RowAndColumn就没有被重新赋值。解决你的问题1楼所说的均是正解。
$.get()和$.post()默认就是异步执行的所以造成几率性的输出。