Uncaught TypeError:动作.Serialize不是一个函数


Uncaught TypeError: action.serialize is not a function

我的代码是这样的:

<form id="form1" method="post">
    <div class="row top-buffer">
        <div class="col-cs-6 col-md-8">
            <input type="param" id="name2" name="value" class="form-control" value="test2">
        </div>
        <div class="col-cxs-6 col-md-4">
            <button type='submit' value='test' class='send button btn btn-danger'>Lägg till</button> <!-- changed -->
        </div>
    </div>
</form>
<form id="form2" method="post">
    <div class="row top-buffer">
        <div class="col-cs-6 col-md-8">
            <input type="param" id="name2" name="value" class="form-control" value="test">
        </div>
        <div class="col-cxs-6 col-md-4">
            <button type='submit' value='delist' class='send button btn btn-danger'>Ta bort</button> <!-- changed -->
        </div>
    </div>
</form>
$(".send").click(function() {
    var myform = $(this).closest("form");
    var sForm = myform.serialize();
    var action = $(this).val();
    var sAction = $(this).val().serialize();;
    $.ajax({
        type: "POST",
        url: "ajax.php",
        data: sForm, sAction,
        success: function(data) {
            $('#response').html(data);
        }
    });
    return false; 
});

当前我收到以下错误:

whitelist.php:67 Uncaught TypeError: action。Serialize不是一个函数(…)

如果我将data更改为以下内容,我没有得到任何错误,但是,数组被破坏了。

data: { mySform, 'Param': action },

数组最终看起来像这样:

Array
(
    [mySform] => value=test2
    [Param] => test
)
为了澄清一些事情,我想让数组看起来像这样:
Array ( [Param] => value [Action] => value ) 

和我需要我的jQuery能够与3个以上的形式工作。对于jQuery和AJAX,我还是个新手。

首先,您获得serialize is not a function错误,因为您在字符串上调用它。它打算在包含在jQuery对象中的form元素上调用。

其次,您需要将所单击按钮的值附加到由serialize()方法生成的querystring中。

最后,为了以正确的方式停止表单提交,您应该将事件与form元素本身挂钩。试试这个:

$("form").submit(function(e) {
    e.preventDefault();
    var $form = $(this);
    var action = $form.find('.send').val();
    $.ajax({
        type: "POST",
        url: "ajax.php",
        data: $form.serialize() + '&action=' + action,
        // data: $form.serialize() + '&' + $.param({ action: action }) // alternative
        success: function(data) {
            $('#response').html(data);
        }
    });
});