Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

$.ajax if condition

Tags:

I failed to write a condition inside of ajax by using the following syntax.

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

but this way works.

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

the 2nd method is not quite ideal as repeating my code. is my first script in a wrong syntax? Could someone please point out? thanks

like image 597
olo Avatar asked Feb 07 '13 23:02

olo


2 Answers

is my first script in a wrong syntax?

Yes, absolutely. You were just inserting if-else-statement parts in the middle of an object literal. You should use something like this:

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

Or if you want to inline them, you can use the ternary operator:

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

(If you don't want to repeat the condition, store its boolean result in a variable)

like image 166
Bergi Avatar answered Dec 04 '22 22:12

Bergi


You could do it like this:

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 }); 
like image 24
Evan Trimboli Avatar answered Dec 04 '22 22:12

Evan Trimboli