2013-02-07 43 views
9

Tôi không viết được điều kiện bên trong ajax bằng cách sử dụng cú pháp sau.

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

nhưng cách này hoạt động.

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

phương pháp thứ 2 không hoàn toàn lý tưởng khi lặp lại mã của tôi. là tập lệnh đầu tiên của tôi có sai cú pháp không? Ai đó có thể vui lòng chỉ ra? cảm ơn

Trả lời

18

là kịch bản đầu tiên của tôi trong một cú pháp sai?

Có, tuyệt đối. Bạn vừa chèn các phần if-else-statement vào giữa một đối tượng theo nghĩa đen. Bạn nên sử dụng một cái gì đó như thế này:

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

Hoặc nếu bạn muốn inline họ, bạn có thể sử dụng ternary operator:

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

(Nếu bạn không muốn lặp lại tình trạng này, lưu trữ boolean của nó kết quả trong một biến)

+0

Cảm ơn bạn đã giải thích thêm – olo

0

Đặt điều kiện trước câu lệnh ajax và gán các biến phổ biến tại đó.

4

Bạn có thể làm điều đó như thế này:

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

Hãy thử cách này nếu url và dữ liệu rất đơn giản.

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

$.ajax mất một đối tượng JavaScript thường xuyên, vì vậy bạn có thể điền vào nó trong piecewise:

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); 
+0

cũng dễ hiểu hơn, cảm ơn rất nhiều – olo

0

Hãy thử điều này:

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

Nhưng khi những người khác đã đề cập đến nó sẽ là tốt nhất để chỉ gán các biến bên ngoài cuộc gọi ajax.

4

Nội dung trong các dấu ngoặc đơn {} là một đối tượng theo nghĩa đen. Bạn có thể khai báo và sửa đổi nó trước khi gọi $.ajax.

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

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

$.ajax(options); 
+0

Cảm ơn bạn. học được từ bạn :-) – olo

Các vấn đề liên quan