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

Dom*_*icM 4 ajax jquery

我有这个ajax代码:

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

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

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

 { "yfilter": $("#yearFilter").serializeArray(),
    "gfilter": $("#genreFilter").serializeArray() }
Run Code Online (Sandbox Code Playgroud)

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

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

<select multiple="multiple" name="yearFilter[]" class="filterChange" id="yearFilter">
Run Code Online (Sandbox Code Playgroud)

我在基层需要的是:

var someData = "";


    if(...){
        someData = { "yfilter": $("#yearFilter").serializeArray(),
                "gfilter": $("#genreFilter").serializeArray() };
    }
    else if(...){
        someData = "sampleString";
    }
Run Code Online (Sandbox Code Playgroud)

在ajax电话中:

...
data: someData,
...
Run Code Online (Sandbox Code Playgroud)

cha*_*tfl 11

我想我知道你想要什么,但是帖子因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");
            }
        }
    })
}
Run Code Online (Sandbox Code Playgroud)