我有一个相当简单的表单,其中包含一些复选框、单选按钮和选择框。我想使用 jQuery 的 $.ajax 发布所有选定的表单数据。但由于某种原因,表单没有被序列化。我不确定是什么原因造成的...(旁注: $('#FormID').submit(..)
对我也不起作用)。因此,我使用以下代码创建了一个按钮:
$(document).ready(function() {
$('#DoSearchRequest').click(function(event) {
//event.preventDefault(); // read about this somewhere, doesn't help
$('#res').html($('#FormSearch').serialize()); // just some <p> to output the result to
$.ajax({
url: 'http://www.domain.nl/ajax/GetResultsBySearchRequest.php',
data: $('#FormSearch').serialize(),
type: 'POST',
success: function(result) {
console.log(result);
},
error: function(a, b, c) { console.log(a); }
});
return false;
});
});
我的按钮位于表单之外(即使在表单中也没关系)。
我的表格:
<form name="FormSearch" id="FormSearch" method="post">
... form elements
</form>
我正在使用 jQuery 1.7.1 和 jQueryUI 1.8.18
最佳答案
愚蠢,但对我来说,我没有命名表单中的字段,因此 .serialize
给了我一个空字符串,而且 .serializeArray
不起作用.
请为您的表单字段命名,否则您将不会获得任何值。
<input name='importantField'/>
不等于
<input id='importantField'/>
如果您尚未在表单字段上定义任何名称,.serialize
或 .serializeArray
甚至默认表单提交都将不起作用。
关于jQuery 的 .serialize() 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168484/