2014-01-20 58 views
-1

我有3個功能。爲每個以下情形:JQuery AJAX - 分配回調處理程序

  • 開始
  • 成功
  • 失敗

我不太清楚兩兩件事:

  1. 正確的屬性名稱這些3.我正在使用beforeSend:,success:failure:

  2. 正確的方法來調用這些3.

這裏的處理程序是我:

<script type="text/javascript"> 


     $('.icon.delete.cosponsor').click(function() { 

      var divId = $(this).attr("data-attr-divid"); 
      var recordId = $(this).attr("data-attr-id"); 
      $("#" + divId).fadeOut(300, function() { $("#" + divId).remove(); }); 

      //Delete a record 
      $.ajax({ 
        type: "POST", 
        url: '/Path/To/Action', 
        data: queryStr, 
        dataType: 'json', 
        beforeSend: OnBegin(), 
        success: OnSuccess(data), 
        failure: OnFailure(data), 
        timeout: 5000 
       }); 


     }); 



/*********************************************** 
    AJAX Callback Handlers 
***********************************************/ 
    function OnBegin() { 

     $('#loading-area').show(); 
    } 


    function OnSuccess(data) { 

     $('#loading-area').hide(); 

     $.notification({ 
      content: 'Information saved successfully.' + data, 
      error: false, 
      timeout: 10000 
     }); 
    } 

    function OnFailure(request, error) { 

     $('#loading-area').hide(); 
     $('#ValidationResultsArea').show(); 
     $.notification({ 
      content: 'Error saving data.', 
      error: true, 
      timeout: 10000 
     }); 
    } 
</script> 
+2

http://api.jquery.com/ajax/ –

+0

beforeSend,成功,錯誤。他們被自動調用。在ajax請求期間只會調用成功或錯誤,而不是兩者。 –

回答

2

你應該傳遞一個參考給一個函數,而不是調用函數,看:

$('.icon.delete.cosponsor').click(function() { 

     var divId = $(this).attr("data-attr-divid"); 
     var recordId = $(this).attr("data-attr-id"); 
     $("#" + divId).fadeOut(300, function() { $("#" + divId).remove(); }); 

     //Delete a record 
     $.ajax({ 
       type: "POST", 
       url: '/Path/To/Action', 
       data: queryStr, 
       dataType: 'json', // <<<<< dataType != datatype 
       beforeSend: OnBegin, // <<<<< 
       success: OnSuccess, // <<<<< 
       failure: OnFailure, // <<<<< 
       timeout: 5000 
      }); 


    }); 
+2

此外,'failure'與'error'不同,屬性名稱區分大小寫,'datatype'與'dataType'不同。 –

0

以下是部分答案。我相信成功和失敗的使用不太常見,許多人正在使用以下回調。

$.ajax({ 
     type: "POST", 
      url: "callbacktestbackend.php", 
    dataType : 'json' }) 
          .done(function(data, textStatus, jqXHR){ 
                    console.log(data, 
                       textStatus, 
                       jqXHR.responseText); 
                                   }) 
          .fail(function(jqXHR, textStatus, errorThrown){ 
                     console.log    
                     (jqXHR.responseText, 
                     textStatus, 
                     errorThrown); 
                                   }) 
          .always(function(data, textStatus, jqXHR){ 
                     console.log(data, 
                        textStatus, 
                        jqXHR); 
                                   }); 

你可以混合和匹配你想使用的,並添加代碼到你認爲合適的功能。


從jQuery AJAX頁面: 棄用通知:jqXHR.success(),jqXHR.error(),和jqXHR.complete()回調棄用的jQuery 1.8。要準備代碼以便最終刪除它們,請改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。