J'ai échoué à écrire une condition à l'intérieur d'ajax en utilisant la syntaxe suivante.
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 });
Mais cela fonctionne de cette façon.
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 }); }
La 2ème méthode n'est pas tout à fait idéale pour répéter mon code. Est-ce mon premier script dans une mauvaise syntaxe? Quelqu'un pourrait-il souligner? Merci
Est-ce mon premier script dans une mauvaise syntaxe?
Oui absolument. Vous étiez simplement en train d'insérer des pièces de déclaration si-else dans le milieu d'un objet littéral. Vous devriez utiliser quelque chose comme ceci:
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);
Ou si vous souhaitez les intégrer, vous pouvez utiliser l' opérateur ternaire :
$.ajax({ type: "POST", url: (num == 1) ? url1 : url2, data: (num == 1) ? data1 : data2, success: success, dataType: dataType });
(Si vous ne voulez pas répéter la condition, stockez son résultat booléen dans une variable)
Vous pourriez le faire comme ceci:
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 });
Les choses dans les {
orthèses }
sont un objet littéral. Vous pouvez le déclarer et le modifier avant d'appeler $.ajax
.
var options = { type: "POST", url: url2, data: data2, success: success, dataType: dataType }; if (num === 1) { options.url = url; options.data = data; } $.ajax(options);
$.ajax
prend un objet JavaScript régulier, afin que vous puissiez le remplir en plusieurs parties:
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);
Placez la condition avant les instructions ajax et affectez des variables communes là-bas.
Essayez cette façon si url et les données sont très simples.
var num = 1; $.ajax({ type: "POST", url : (num==1? url1 : url2), data: (num==1? data1 : data2), success: success, dataType: dataType });
Essaye ça:
var num = 1; $.ajax({ type: "POST", url: (num === 1 ? url1 : url2) data: (num === 1 ? data1 : data2) success: success, dataType: dataType });
Mais comme d'autres l'ont mentionné, il serait préférable d'attribuer des variables en dehors de l'appel ajax.