【问题标题】:$.ajax if condition$.ajax if 条件
【发布时间】:2013-02-07 23:04:07
【问题描述】:

我未能使用以下语法在 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
});
}

第二种方法不太理想,因为重复我的代码。 我的第一个脚本语法错误吗?有人可以指出吗?谢谢

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

    是的,当然。您只是在对象文字的中间插入 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
    });
    

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

    【讨论】:

    • 非常感谢您的解释
    【解决方案2】:

    你可以这样做:

    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
    });
    

    【讨论】:

      【解决方案3】:

      { 大括号 } 中的内容是一个对象字面量。你可以在调用$.ajax之前声明和修改它。

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

      【讨论】:

        【解决方案4】:

        $.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);
        

        【讨论】:

          【解决方案5】:

          如果url和数据很简单,试试这个方法。

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              试试这个:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-09-04
                • 2017-08-23
                • 1970-01-01
                • 2021-10-02
                • 2016-03-08
                • 2020-08-20
                • 1970-01-01
                相关资源
                最近更新 更多