2015-08-08 73 views
0
// AjaxHandler 
    function AjaxHandler(url, dataContent){ 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: 'json', 
     data: dataContent, 
     async: true, 
     cache: false, 
     success: function(obj){ 
      console.log(obj); 
      return obj; 
     } 
    }); 
    } 

    $("#button").click(function(){ 
     AjaxHandler("http://xxxxxx/yyyyyy.api", "some data"); 
     alert(obj); 
    }); 

如果我可以從被調用函數「AjaxHandler」獲取對象數據。 如何使用這個對象數據?我嘗試提醒obj但不顯示定義。如何使用被調用函數的返回數據?

我可以在控制檯中的函數AjaxHandler中打印obj數據。所以數據就在那裏。 我只是不知道如何在調用函數後使用它。

+0

你不能這樣做的。 AJAX是異步的,所以它不會馬上返回任何東西。你需要一個回調函數或類似的東西。即使它能夠工作,obj也只會是'success'函數中的局部變量,而不是您的點擊處理函數。 – putvande

回答

0

由於AJAX是異步的,你不能「返回」一個變量。但是,您可以將其發送到下一個功能來處理數據。

function AjaxHandler(url, dataContent){ 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: 'json', 
     data: dataContent, 
     async: true, 
     cache: false, 
     success: function(obj){ 
      console.log(obj); 
      processAjax(obj); 
     } 
    }); 
} 

function processAjax(obj) { 
    alert(obj); 
} 

$("#button").click(function(){ 
    AjaxHandler("http://xxxxxx/yyyyyy.api", "some data"); 
}); 
0

嘗試成功的ajax:

// AjaxHandler 
    function AjaxHandler(url, dataContent){ 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: 'json', 
     data: dataContent, 
     async: true, 
     cache: false, 
     success: function(obj){ 
      console.log(obj); 
      return obj; 
     }, 
    success(function() { 
    (function() { 
    alert("success"); 

     }) 
    }) 
     }); 
     } 
$("#button").click(function(){ 
    AjaxHandler("http://xxxxxx/yyyyyy.api", "some data"); 
}); 
0

由於$.ajax方法返回一個承諾,你可以做到以下幾點:

function AjaxHandler(url, dataContent){ 
    return $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: 'json', 
     data: dataContent, 
     async: true, 
     cache: false, 
     success: function(obj){ 
      return obj; 
     } 
    }); 
} 

$("#button").click(function(){ 
    AjaxHandler("http://xxxxxx/yyyyyy.api", "some data") 
     .then(function (obj) { 
     console.log(obj); 
     }); 
}); 
相關問題