23

次の構文を使用して、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
});
}

2番目の方法は、私のコードを繰り返すのであまり理想的ではありません。私の最初のスクリプトは間違った構文ですか?誰か指摘してもらえますか?ありがとう

4

7 に答える 7

39

私の最初のスクリプトは間違った構文ですか?

そのとおり。オブジェクトリテラルの途中に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
});

(条件を繰り返したくない場合は、ブール結果を変数に格納します)

于 2013-02-07T23:07:11.337 に答える
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
});
于 2013-02-07T23:06:41.827 に答える
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);
于 2013-02-07T23:10:05.280 に答える
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);
于 2013-02-07T23:09:09.697 に答える
2

URLとデータが非常に単純な場合は、この方法を試してください。

  var num = 1;
  $.ajax({
      type: "POST",
      url : (num==1? url1 : url2),
      data: (num==1? data1 : data2),
      success: success,
      dataType: dataType
    });
于 2013-02-07T23:08:40.300 に答える
0

ajaxステートメントの前に条件を配置し、そこに共通変数を割り当てます。

于 2013-02-07T23:06:07.057 に答える
0

これを試して:

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

しかし、他の人が述べているように、ajax呼び出しの外で変数を割り当てるのが最善でしょう。

于 2013-02-07T23:09:54.437 に答える