2016-02-16 136 views
0

我知道ajax的成功函數是不能返回數據的,所以我曾試過通過回調函數,但是它仍然存在undefined返回。我已經通過變量響應文字,但我不想這樣做。所以幫助我使用回調函數返回數據!通過回電返回ajax?

HTML

<div id="address"> 
     <table> 
     <thead> 
     <th>Department</th><th>Name</th><th>Age</th><th>Address</th> 
     </thead> 
     <tbody> 
     </tbody> 
</div> 

JS

回調的getAddress()是返回null

$(document).ready(function(){ 
     $.ajax({ 
      url : "header.php", 
      dataType : "json", 
      success : function (d) { 
      var temp = getAddress(callback); 
      console.log(temp) // undefined 
      var data = JSON.parse(temp); 
      $.each(data,function(i,d){ 
       $("#address tbody").append("<tr><td>"+d[i].dept_name+"</td><td>"+d.Name+"</td><td>"+d.Age+"</td><td>"+d.Address+"</td></tr>"); 
      });   
      } 
     });      
    });  

    function callback(result){ 
     return result; 
    } 
    function getAddress(callback){ 
      $.ajax({ 
      url: 'address.php', 
      async : false, 
      dataType : 'json',  
      success: function(result){ 
      callback(result); 
      } 
      });   
    } 
+0

什麼是PHP代碼返回? – user2182349

回答

2

您正在使用的回調以錯誤的方式。由AJAX調用的返回值工作的邏輯應該是回調

$(document).ready(function() { 
    $.ajax({ 
    url: "header.php", 
    dataType: "json", 
    success: function(d) { 
     getAddress(function(data) { 
     console.log(data) // undefined 
     //var data = JSON.parse(temp); not required as you have `dataType: 'json' 
     $.each(data, function(i, d) { 
      $("#address tbody").append("<tr><td>" + d[i].dept_name + "</td><td>" + d.Name + "</td><td>" + d.Age + "</td><td>" + d.Address + "</td></tr>"); 
     }); 
     }); 
    } 
    }); 
}); 

在代碼中,你與回調調用getAddress內,但由於getAddress方法不返回任何東西的temp值將是未定義。