2016-10-07 22 views
0

大家好我有一個函數執行ajax請求,結果會返回到另一個函數,但是當我調用該函數時它會返回undefined值,請大家幫忙!如何回調用戶定義函數和顯示值

function getState(id) 
 
{ 
 
    
 
    var StateJsonString = jQuery.parseJSON(id); 
 
    var stateData; 
 
    
 
    $.ajax({ 
 
     
 
     type: "POST", 
 
     
 
     url: "phpFile/getStatenameVehiclePro.php", 
 
     
 
     dataType: "json", 
 
     
 
     data: { id:StateJsonString.state}, 
 
     
 
     success: function(stateFrom){ 
 
      
 
      stateData = stateFrom.data[0][1]; 
 
      
 
     }, 
 
     Fail: function(){ 
 
      
 
      alert("Cannot Loading State Name"); 
 
      
 
     }, 
 
     error: function(){ 
 
      
 
      alert("Cannot Loading State Name"); 
 
     } 
 
     
 
    }); 
 
    
 
    return stateData; 
 
}

回答

0

當使用Ajax,A指Asynchronous。編譯器到達您的ajax函數後,代碼中會發生什麼,它會同時請求您的PHP頁面。它也從相同的函數返回return stateData;

var stateData;未分配任何值。這就是爲什麼當您的ajax調用已啓動並且瀏覽器不會等待您的ajax調用首先完成並且它正在並行執行服務asynchronous功能時返回undefined

您必須使用不推薦的async: false。但在你的情況這是工作建議。

.ajax({    
     type: "POST",    
     url: "phpFile/getStatenameVehiclePro.php",   
     dataType: "json", 
     async: false 
}); 
+0

謝謝你,夥計這是工作 –

0

添加async選項設置爲false,並返回Ajax調用之外。

  • 設置async to false意味着您要調用的語句必須先完成,然後才能調用函數中的下一個語句。
  • 如果您設置了async: true,那麼該語句將開始執行,並且將調用下一個語句,而不管異步語句是否已完成。

function getState() { 
    var result=""; 
    $.ajax({ 
     url:"URL", 
     async: false, 
     success:function(data) { 
     result = data; 
     } 
    }); 
    return result; 
} 

此外,

處理Ajax請求

//Ajax function call 
function getState() { 
    return $.ajax({ 
     url: "URL" 
    }); 
} 

//Get ajax request 
var promise = getState(); 

//Call on ajax success 
promise.success(function (data) { 
    //Do what you want 
}); 
相關問題