如何在jquery ajax调用中动态传递数据参数(多个数据数组)

我有这个ajax代码:

return $.ajax({ type: "POST", url: "somefile.php", cache:false, data: { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() }, dataType:"json", success: function(data){ alert("success"); } 

这工作正常,但我需要动态传递数据参数。 现在我需要上面的数据参数内容和一个字符串。

我该如何动态传递? /如何将其存储在变量中并将其传递给“data:”字段?

  { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() } 

我试过JSON.stringify II无法让它工作,可能是由于数据是一个数组。

年份和流派数组直接来自jquery下拉菜单。 它的选择就像它的#id一样“$(”#yearFilter“)”。 这是select表单元素。

  

我在基层需要的是:

 var someData = ""; if(...){ someData = { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() }; } else if(...){ someData = "sampleString"; } 

在ajax电话中:

 ... data: someData, ... 

我想我知道你想要什么,但是post因json stringify等无关紧要的问题而过于复杂。 这是一个函数,可以在代码中的几个地方使用,以生成一种类型的AJAX调用。

然后,您可能会有几个按钮,并为每种类型的按钮调用处理程序中的函数,并更改传递给function的参数

 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 = "sampleString"; } $.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"); } } }) } 

希望我明白你的要求。 你可以这样做:

 var parameters = {}; if (...) { parameters = $("#yearFilter").serializeArray(); } if () { parameters = $("#genreFilter").serializeArray(); } 

然后替换该行:

 parameters: { "yfilter": $("#yearFilter").serializeArray(), "gfilter": $("#genreFilter").serializeArray() }, 

有:

 data: parameters, 

JSON类型应该是动态数据的最佳选择。 在json中推送你想要的任何数据,如下所示,因此动态创建你的json并作为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(String.format("Status Code: {0}, ", results.status, results.statusText)); } }); 

试试吧:

 someData = JSON.stringify({ yfilter: $("#yearFilter").val(), gfilter: $("#genreFilter").val() }); 

它会工作。