2015-07-20 148 views
0

這裏是我以前的代碼:添加參數在Ajax調用,如果條件爲真

$.ajax({ 
    type: "POST", 
    url: "/Test/Save", 
    data: { 
     comments: $('#comments').val() 
     <% if (SomeCondition) { %>, 
      profit: parseInt(profitCombo.getSelectedValue()) 
     <% } %>, 
     myData: JSON.stringify(someData).toString() 
    } 
... 

現在,我把這個代碼在一個單獨的JS文件,我需要刪除ASPX調用。我有一個變量some​​ConditionJsVariable,所以我想做出這樣的事情:

data: { 
     comments: $('#comments').val() 
     if (someConditionJsVariable) {, 
      profit: parseInt(profitCombo.getSelectedValue()) 
     }, 
     myData: JSON.stringify(someData).toString() 
    } 

如果該變量爲真,添加一個逗號和其它參數。如何做到這一點?

+0

在ajax調用中傳遞給'data:'的對象可以在別處構造嗎?這個邏輯可以封裝在一個函數中嗎? –

+0

@AnishPatel是的,是的:) –

回答

1

您可以更新代碼如下

// create object 
var data = { 
     comments: $('#comments').val(), 
     myData: JSON.stringify(someData).toString() 
    } 

if (someConditionJsVariable) {, 
    data.profit = parseInt(profitCombo.getSelectedValue()); 
} 

data : data // pass object 
1

之前就建立自己的對象,使用功能:

$.ajax({ 
     type: "POST", 
     url: "/Test/Save", 
     data: getMyDataObject() 
     //other settings 
}); 

function getMyDataObject() { 
    var myDataObject = { 
    comments: $('#comments').val() 
    myData: JSON.stringify(someData).toString() 
    } 

    if (someConditionJsVariable) { 
      myDataObject.profit= parseInt(profitCombo.getSelectedValue()); 
    } 
    return myDataObject; 
} 
1

你可以換全部的邏輯成一個函數,像這樣:

var testSave = function(someConditionJsVariable, someData, profitCombo) { 

    // construct your data object 
    var data = { 
     comments: $('#comments').val(), 
     myData: JSON.stringify(someData), 
    } 

    // assign the conditional property with value depending on condition 
    !!someConditionJsVariable && (data.profit = parseInt(profitCombo.getSelectedValue())); 

    // return the jQuery promise from ajax call 
    return $.ajax({ 
     type: "POST", 
     url: "/Test/Save", 
     data: data 
    }); 
} 

然後使用這樣的功能:

testSave(someConditionJsVariable, someData, profitCombo) 
    .then(function(result) { 
     // do something with result 
    });