$ .ajax if condition

我没有使用以下语法在ajax中写入条件。

var num = 1; $.ajax({ type: "POST", //condition starts if (num === 1){ url: url1, data: data1, }else{ url: url2, data: data2, } //condition finishes success: success, dataType: dataType }); 

但这种方式有效。

  var num = 1; if(num === 1){ $.ajax({ type: "POST", url: url1, data: data1, success: success, dataType: dataType }); }else{ $.ajax({ type: "POST", url: url2, data: data2, success: success, dataType: dataType }); } 

第二种方法不像重复我的代码那么理想。 是我的第一个错误语法的脚本? 有人可以指出吗? 谢谢

是我的第一个错误语法的脚本?

是的,一点没错。 您只是在对象文字的中间插入if-else-statement部分。 你应该使用这样的东西:

 var params = { type: "POST", success: success, dataType: dataType }; if (num == 1) { params.url = url1; params.data = data1; } else { params.url = url2; params.data = data2; } $.ajax(params); 

或者,如果要内联它们,可以使用三元运算符 :

 $.ajax({ type: "POST", url: (num == 1) ? url1 : url2, data: (num == 1) ? data1 : data2, success: success, dataType: dataType }); 

(如果您不想重复该条件,请将其布尔结果存储在变量中)

你可以这样做:

 var num = 1, url, data; if (num === 1) { url = url1; data = data1; } else { url = url2; data = data2; } $.ajax({ type: "POST", url: url, data: data, success: success, dataType: dataType }); 

{ braces }的东西是一个对象文字。 您可以在调用$.ajax之前声明并修改它。

 var options = { type: "POST", url: url2, data: data2, success: success, dataType: dataType }; if (num === 1) { options.url = url; options.data = data; } $.ajax(options); 

$.ajax采用常规JavaScript对象,因此您可以分段填充它:

 request = {type: "POST", success: success, dataType: dataType}; if(num == 1) { request.url = url1; request.data = data1; } else { request.url = url2; request.data = data2; } $.ajax(request); 

如果url和数据非常简单,请尝试这种方式。

  var num = 1; $.ajax({ type: "POST", url : (num==1? url1 : url2), data: (num==1? data1 : data2), success: success, dataType: dataType }); 

将条件放在ajax语句之前,并在那里分配公共变量。

试试这个:

 var num = 1; $.ajax({ type: "POST", url: (num === 1 ? url1 : url2) data: (num === 1 ? data1 : data2) success: success, dataType: dataType }); 

但正如其他人提到的那样,最好只在ajax调用之外分配变量。