我无法使用以下语法在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
});
}
第二种方法不像重复我的代码那么理想。 是我的第一个错误语法的脚本?有人可以指出吗?感谢
答案 0 :(得分:27)
是我的第一个错误语法的脚本?
是的,绝对的。您只是在对象文字的中间插入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);
或者如果您想要内嵌它们,可以使用ternary operator:
$.ajax({
type: "POST",
url: (num == 1) ? url1 : url2,
data: (num == 1) ? data1 : data2,
success: success,
dataType: dataType
});
(如果您不想重复该条件,请将其布尔结果存储在变量中)
答案 1 :(得分:5)
你可以这样做:
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
});
答案 2 :(得分:4)
{
大括号}
中的内容是一个对象字面值。您可以在致电$.ajax
之前声明并修改它。
var options =
{
type: "POST",
url: url2,
data: data2,
success: success,
dataType: dataType
};
if (num === 1) { options.url = url; options.data = data; }
$.ajax(options);
答案 3 :(得分:3)
$.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);
答案 4 :(得分:1)
如果网址和数据非常简单,请尝试这种方式。
var num = 1;
$.ajax({
type: "POST",
url : (num==1? url1 : url2),
data: (num==1? data1 : data2),
success: success,
dataType: dataType
});
答案 5 :(得分:0)
将条件放在ajax语句之前,并在那里分配公共变量。
答案 6 :(得分:0)
试试这个:
var num = 1;
$.ajax({
type: "POST",
url: (num === 1 ? url1 : url2)
data: (num === 1 ? data1 : data2)
success: success,
dataType: dataType
});
但正如其他人所说,最好只在ajax调用之外分配变量。