J’ai ce code ajax:
return $.ajax({ type: "POST", url: "somefile.php", cache:false, data: { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() }, dataType:"json", success: function(data){ alert("success"); }
Cela fonctionne bien, mais je dois passer le paramètre data dynamicment. Pour l’instant, j’ai besoin du contenu du paramètre de données ci-dessus et d’une seule chaîne.
Comment est-ce que je passe ceci dynamicment? / Comment puis-je le stocker dans une variable et le transmettre au champ “data:”?
{ "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() }
J’ai essayé JSON.ssortingngify II n’a pas pu le faire fonctionner probablement à cause des données étant un tableau.
Les tableaux d’années et de genres proviennent directement du menu déroulant jQuery. Il est sélectionné comme par #id comme “$ (” # yearFilter “)”. C’est l’élément de formulaire sélectionné.
Ce dont j’ai besoin au niveau de base, c’est:
var someData = ""; if(...){ someData = { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() }; } else if(...){ someData = "sampleSsortingng"; }
Et en appel ajax:
... data: someData, ...
Je pense avoir une idée de ce que vous voulez mais la publication a été trop compliquée par des questions superflues telles que json ssortingngify. Voici une fonction qui pourrait être utilisée à d’autres endroits de votre code pour effectuer un type d’appel AJAX à un autre.
Vous auriez alors peut-être plusieurs boutons et appelleriez la fonction dans les gestionnaires pour chaque type de bouton et changeriez l’argument passé en fonction
doAjax('someval');/* use in button 1*/ doAjax('someOtherval');/* use in button 2*/ function doAjax(arg) { var someData = ""; if (arg == 'someval') { someData = { "yfilter": $("#yearFilter").val(), "gfilter": $("#genreFilter").val() }; } else { someData = "sampleSsortingng"; } $.ajax({ type: "POST", url: "somefile.php", cache: false, data: someData, dataType: "json", success: function(data) { if (arg == 'someval') { alert("success 1"); } else { alert("success 2"); } } }) }
J’espère que j’ai compris ce que vous demandez. Vous pouvez faire quelque chose comme ça:
var parameters = {}; if (...) { parameters = $("#yearFilter").serializeArray(); } if () { parameters = $("#genreFilter").serializeArray(); }
puis remplacez la ligne:
parameters: { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() },
avec:
data: parameters,
Le type JSON devrait être la meilleure option pour les données dynamics. poussez toutes les données que vous souhaitez dans json comme indiqué ci-dessous, Créez donc votre json dynamicment et envoyez-le en tant que données ajax.
var employees = { accounting: [], dept: "HR" }; employees.accounting.push({ "firstName" : item.firstName, "lastName" : item.lastName, "age" : item.age }); $.ajax({ url: POSTURL, type: 'POST', dataType: 'json', data : employees, contentType: 'application/json; charset=utf-8', success: function (results) { }, error: function (results) { jQuery.error(Ssortingng.format("Status Code: {0}, ", results.status, results.statusText)); } });
Essayez le:
someData = JSON.ssortingngify({ yfilter: $("#yearFilter").val(), gfilter: $("#genreFilter").val() });
Ça va marcher.