2016-01-03 167 views
0

我正在開發jQuery原型,使用ajax調用更簡單。如何將參數傳遞給委託函數從ajax回調

代碼

ajax: { 
    call : function(url,dataToSend,doOnSuccess,doOnFailure) { 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: dataToSend 
      , 
      //cache: false, 
      success: function (result) {     

        doOnSuccess(); 

      }, 
      error: function(xhr, textStatus, errorText) { 

        doOnFailure(); 

      } 
     }); 

    } 
} 

原型

ajax.call("MyUrl",{data:"MyData To Send"},alert(),alert()); 

比如我要顯示警報成功的結果。 那麼我怎樣才能傳遞ajax回調參數給我的委託(例如doOnSuccess()和doOnFailure()),我作爲參數傳遞?

最好的問候!

jQuery.when

jQuery.deferred

或者 呼叫的功能,例如:

+0

請添加正確的標籤問題 – Oooogi

+0

你的原型比'$ .post(url,params).done(onDone).fail(onFail)'更簡單嗎?這似乎只是我多餘的包裝^^ – moonwave99

+0

@ moonwave99:看??我希望能夠將回調參數傳遞給傳遞給回調的函數:在您的示例中,我想將xhr傳遞給您傳遞的onFail函數,得到它了嗎? –

回答

0

如果返回回調阿賈克斯jQuery的閱讀when or deferred

ajax.call("MyUrl",{data:"MyData To Send"},alert,alert); 
+0

有時我作爲代理傳遞給ajax回調的函數擁有一些參數,所以當在回調函數中調用它們時,我想ti向它們傳遞一些額外的參數: –

+0

simple:remove()in call function'ajax.call(「MyUrl」, {data:「MyData To Send」},alert,alert);' –

+0

請測試'var ajax = { call:function call(doOnFailure){ doOnFailure(); } }; ajax.call(alert)' –

0

阿賈克斯與否,這是回調的問題在JS中的功能。 你只需要傳遞函數作爲參數。讓我們定義自定義doOnSuccess和doOnFailure功能:

function doOnSuccess(data, textStatus, xhr){ 
    /* Do something with data, textStatus, xhr */ 
    alert(data); 
} 

function doOnFailure(xhr, ajaxOptions, thrownError){ 
    /* Do something with parameters) */ 
    alert('error'); 
} 

然後,你可以定義你的Ajax功能:

ajax: { 
    call : function(url,dataToSend,doOnSuccess,doOnFailure) { 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: dataToSend 
      , 
      //cache: false, 
      success: function (data, textStatus, xhr) {     
        /* Do something with data before doOnSuccess */ 
        doOnSuccess(data, textStatus, xhr); 

      }, 
      error: doOnFailure 
     }); 

    } 
} 

現在,我們可以調用Ajax的功能:

ajax.call("MyUrl",{data:"MyData To Send"},doOnSuccess,doOnFailure); 
+1

'成功:doOnSuccess'就足夠了,不含匿名包裝。然後OP會意識到整個事情最終變得多餘:)) – moonwave99

+0

你是對的。希望在調用之前添加操作數據的選項。 – Oooogi

相關問題