通过回电返回ajax?

时间:2016-02-16 03:25:08

标签: javascript jquery ajax

我知道ajax成功函数是无法返回数据的,所以我试过回调函数,但它仍然有未定义的返回。我已经通过变量 responseText < / strong>,但我不想那样做。所以帮我回调函数返回数据!!!

HTML

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

JS

  

getAddress callback()返回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);
           }
           });          
    }

1 个答案:

答案 0 :(得分: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的值将不确定。