我有两种形式,我想通过jQuery Ajax调用发送数据.我设法成功发送一个表单,但我无法通过相同的Ajax调用从这两个表单发送数据.
我的表格是:
<form id="filter-group1" method="post" name="filtergroup1">
<input type="checkbox" name="colour1" value="Value1" onclick="filterBy()" /><label>Option 1</label>
<input type="checkbox" name="colour2" value="Value2" onclick="filterBy()" /><label>Option 2</label>
<input type="checkbox" name="colour3" value="Value3" onclick="filterBy()" /><label>Option 3</label>
</form>
<form id="filter-group2" method="post" name="filtergroup2">
<input type="checkbox" name="size1" value="Value1" onclick="filterBy()" /><label>Option 1</label>
<input type="checkbox" name="size2" value="Value2" onclick="filterBy()" /><label>Option 2</label>
<input type="checkbox" name="size3" value="Value3" onclick="filterBy()" /><label>Option 3</label>
</form>
Run Code Online (Sandbox Code Playgroud)
功能是:
function filterBy() {
var fgroup1 = document.filtergroup1;
var fgroup2 = document.filtergroup2;
var dataString1 = $(fgroup1).serialize();
var dataString2 = $(fgroup2).serialize();
var filterdata = [];
filterdata.push(dataString1,dataString2);
$.ajax( {
type: 'POST',
url: 'filter.php',
data: filterdata,
success: function(data) {
console.log(data);
$('#message').html(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我在php文件中有这个:
echo var_export($_POST);
Run Code Online (Sandbox Code Playgroud)
如果我替换数据,该函数适用于一个表单:with
data: dataString1,
Run Code Online (Sandbox Code Playgroud)
我试图用两种形式的数据实现相同的结果,但我不想为每个表单使用不同的函数.
我感谢任何帮助.谢谢.
Ter*_*rry 20
jQuery的serialize()
方法将您的输入值与'&'符号连接起来 - 因此当您推送两个序列化的表单数据时,您正在创建一个数组,而不是将两个表单中的值与'&'连接(这将是正确解析的值) ).您可以:(1)将数组中的项连接成带有'&'的字符串或(2)$("#form1, #form2").serialize()
用来执行此操作:
function filterBy() {
// Construct data string
var dataString = $("#filter-group1, #filter-group2").serialize();
// Log in console so you can see the final serialized data sent to AJAX
console.log(dataString);
// Do AJAX
$.ajax( {
type: 'POST',
url: 'filter.php',
data: dataString,
success: function(data) {
console.log(data);
$('#message').html(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
[编辑]:在旁注中,我强烈反对使用内联JavaScript.您应该将内容与功能分开.相反,使用该.click()
功能,如:
$("form input[type='checkbox']").click(function() {
var dataString = $("#filter-group1, #filter-group2").serialize();
// (and more...)
});
Run Code Online (Sandbox Code Playgroud)
我也不完全理解使用两种不同形式的原因......
归档时间: |
|
查看次数: |
27646 次 |
最近记录: |