2014-10-29 50 views
-1

我想跳過所有這段代碼,如果一些先決條件不滿足,但我也想移動函數中括號之間的所有代碼。它允許嗎?我不明白這個語法是如何工作的。製作JQuery ajax請求有條件的

$.ajax({ 
     type: "POST", 
     url: urlAppend, 
     data: JSON.stringify(xxx), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     processdata: false, 
     success: function (result) { 
      if (canceled) { 
       return; 
      } 
       //Long code 
      } 
     //Long code 2 
     }, 
     error: function (request, error) { 
      alert('ppp'); 
     } 
    }); 
+2

是的,你可以..你甚至嘗試? – codepixlabs 2014-10-29 15:29:47

+0

你想跳過'$ ajax'整個調用嗎?你不能只是在'if'語句中包裝該代碼嗎? – Lix 2014-10-29 15:29:51

+0

@Lix:是的,我不希望Ajax被調用。 – Revious 2014-10-29 15:31:00

回答

3

將您$.ajax調用成一個函數,然後包裹調用該函數在條件表達式:

function makeRequest(){ 
    $.ajax(...) 
} 

if (some_condition){ 
    makeRequest(); 
} 

請記住,您正在使用AJAX的回調裏面的一些變量(即canceled變量)。您必須使該變量可用於該函數。

+0

謝謝,我錯過了大概的變量問題.. – Revious 2014-10-29 16:01:08

1
function doComplexStuff(){ 

} 

$.ajax({ 
     type: "POST", 
     url: urlAppend, 
     data: JSON.stringify(xxx), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     processdata: false, 
     success: doComplexStuff, 
     error: function (request, error) { 
      alert('ppp'); 
     } 
    }); 

doComplexStuff將自動接收成功函數收到的所有參數。

1

試試這個:

function runAjax(params){ 
    $.ajax({ 
     type: params["post"], 
     url: params["url"], 
     data: params["data"], 
     contentType: params["content_type"], 
     dataType: params["json"], 
     processdata: params["process_bool"], 
     success: function (result) { 
      if (params["canceled"]) { 
       return; 
      } 
       //Long code 
      } 
     //Long code 2 
     }, 
     error: function (request, error) { 
      alert('ppp'); 
     } 
    }); 
} 

if(condition){ 
    var options = { 
     //set options here 
    }; 
    runAjax(options); 
} 
+0

謝謝,這是我正在尋找 – Revious 2014-10-29 15:38:59

+0

@Revious沒問題, – CodeGodie 2014-10-29 15:42:32

+0

@Revious它工作? – CodeGodie 2014-10-29 16:04:57

1

此樣本請看:

function callAjax(condition) { 
    if (condition) { 
     $.ajax({ 
      type: "POST", 
      url: urlAppend, 
      data: JSON.stringify(xxx), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      processdata: false, 
      success: function (result) { 
       if (canceled) { 
        return; 
       } 
        //Long code 
       } 
      //Long code 2 
      }, 
      error: function (request, error) { 
       alert('ppp'); 
      } 
     }); 
    } 
} 

// Somewhere in your code 
callAjax(condition); 
+2

如果** whole **函數依賴於特定的條件,它會提高可讀性,讓條件包裝實際調用函數。你只有'callAjax' *如果* XYZ比知道'callAjax'有時被執行,有時不被執行 - 但總是被調用...更有意義... – Lix 2014-10-29 15:47:08