2016-11-21 110 views
-1

我想知道如何將ajax變量傳遞給javascript,我正在處理這個代碼示例。注意:追加是工作,但它不是最好的解決辦法通過ajax變量爲javascript

$.ajax({ 
      type: "POST", 
      dataType: "json", 
      url: "get_promesse_done.php", 
      data: {num : num,prmaff : prmaff}, 
      success: function(data1) { 
         var f= '<td >'+data1[0]+'</td>'; 
         var y = '<td >'+data1[1]+'</td>'; 
         var x = '<td >'+data1[2]+'</td>'; 
         var tab9='<tr>'+f+y+x+'</tr>'; 

            // $('#testb').append(tab9); 
      } 
      }); 

     ss1='<td bgcolor=#27ec04><table id="testb">'+tab9+'</table></td>'; 
+0

「將ajax變量傳遞給javascript」這沒有任何意義。 AJAX只是一種從服務器請求數據的方式。 –

+0

請說明您的具體問題或添加額外的細節,以確切地突出你需要什麼。正如目前所寫,很難確切地說出你在問什麼。 –

回答

1

問題是與JavaScript closures因爲tab9未定義的$.ajax父範圍。所有在success範圍內定義的變量都不可從全局訪問。另一個原因是$.ajax是異步的(非阻塞的)並且允許執行後面的代碼,並且您假設ss1將具有來自AJAX的值tab9,但事實上並非如此。

您可以在$.ajaxsuccess的父範圍內定義tab9,並更新該範圍。另一件事是讓你的代碼更具可讀性,將你想要發生的事情封裝在一個將在AJAX完成後調用的函數中。

// define these in advance. 
var ss1, 
    tab9; 

$.ajax({ 
    /* settings */ 
    success: onSuccess // set callback to onSuccess; 
}); 

// this will be called with all arguments of $.ajax.success 
function onSuccess(data){ 

     var f= '<td >'+data1[0]+'</td>'; 
     var y = '<td >'+data1[1]+'</td>'; 
     var x = '<td >'+data1[2]+'</td>'; 
     tab9='<tr>'+f+y+x+'</tr>'; // update tab9 

     ss1='<td bgcolor=#27ec04><table id="testb">'+tab9+'</table></td>'; // update ss1 

     // append to dom or whatever you want. 

}