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");

解决方案 »

  1.   

    $.get()在默认情况下是异步执行的,也就是说程序不会等待function(data){RowAndColumn=data;}执行完再执行alert(RowAndColumn+" first ");
    它会先执行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()改成同步的方法,
      

  2.   

    你的Ajax和你的第八行代码是一起执行的(就是Ajax异步执行)
    当你的Ajax执行的快时返回来值了恰好第八行代码还没有执行呢,
    那么RowAndColumn将被Ajax重新赋值(赋值成Ajax返回来的值data)
    如果Ajax执行的慢了那么在执行第八行代码时Ajax还没有来得及返回来值呢
    RowAndColumn就没有被重新赋值。解决你的问题1楼所说的均是正解。
    $.get()和$.post()默认就是异步执行的所以造成几率性的输出。