2013-04-29 88 views
1

下面您可以看到我在做一個簡單的ajax調用。但是,調用成功完成後,我想從頁面中刪除加載器div。問題是成功功能不會觸發,爲什麼?當完成ajax調用時,jquery成功不運行

utils.get_do stuff = function AJAX_do stuff() {  
    $.getJSON('/url//', 
     function (data) { 
      $.each(data, function (key, val) { 
       // I do stuff with the data here. 
      }); 
     }, 
     function (success) { 
      $('#loader').hide(); 
     } 
    ); 
}; 
+5

['$ .getJSON()'](http://api.jquery.com/jQuery.getJSON/)不接受2個回調參數。閱讀文檔。 – 2013-04-29 15:21:09

+0

你想要用第一個函數填充數據參數,還是用它來處理AJAX結果? – Alnitak 2013-04-29 15:27:47

回答

4

這裏是getJSON一個例子,我想你要隱藏在整個處理程序$('#loader'),所以$('#loader')隱藏不管請求失敗或成功。

$.getJSON("/sms/fetch_smartpages/", function() { 
    console.log("success"); 
     $.each(data, function (key, val) { 
     //I do stuff with the data here. 
     }); 
     $('#loader').hide(); //<==== moved from here 
    }) 
    .done(function() { console.log("second success"); }) 
    .fail(function() { console.log("error"); }) 
    .always(function() { 
       console.log("complete"); 
       $('#loader').hide(); // moved here 
    }); 

http://api.jquery.com/jQuery.getJSON/

2
$.getJSON('/sms/fetch_smartpages/', 

// This callback function is executed if the request succeeds. 
function(data) { 

    $.each(data, function(key, val) { 
    // I do stuff with the data here. 
    }); 

    // Hide loader here 
    $('#loader').hide(); 
}); 
1

http://api.jquery.com/jQuery.getJSON/

$.getJSON('/sms/fetch_smartpages/',function (data) { // <-- this is your success handler 
     $.each(data, function (key, val) { 
     I do stuff with the data here. 
     }); 
     $('#loader').hide(); 
}); 
1
$.getJSON("example.json", function() { 
    console.log("success"); 
}) 
.done(function() { console.log("second success"); }) 
.fail(function() { console.log("error"); }) 
.always(function() { console.log("complete"); }); 
1

我懷疑你有誤解的第二個參數的目的$.getJSON() - 它通常包含用於將傳遞到遠程服務器供應數據的JS對象。

因爲您已經傳遞了一個函數引用,它被用作「成功」回調函數,而第三個參數被忽略。

如果你真的想使用兩個單獨的「成功」回調,您可以使用.done(f1, f2)

注意兩個功能將被傳遞標準(response, status, jqXHR)組參數。