我的代码是这样的:
<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);
}
});
});