Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.ajax if条件_Javascript_Jquery - Fatal编程技术网

Javascript $.ajax if条件

Javascript $.ajax if条件,javascript,jquery,Javascript,Jquery,我未能使用以下语法在ajax内部编写条件 var num = 1; $.ajax({ type: "POST", //condition starts if (num === 1){ url: url1, data: data1, }else{ url: url2, data: data2, } /

我未能使用以下语法在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
});
}
第二种方法不太理想,因为重复我的代码。
我的第一个脚本语法错误吗?有人能指出吗?谢谢

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

您可以这样做:

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
});
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);
我的第一个脚本语法错误吗

是的,绝对是。如果只是在对象文字的中间部分插入语句,则只是插入。您应该使用如下内容:

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
});
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);
或者,如果要将其内联,可以使用:


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

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

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

$.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);
试试这个:

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

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

括号中的内容是一个对象文本。您可以在调用
$.ajax
之前声明并修改它

var options =
{
    type: "POST",
    url: url2,
    data: data2,
    success: success,
    dataType: dataType
};

if (num === 1) { options.url = url; options.data = data; }

$.ajax(options);

非常感谢你的解释