php我有以下代码
<form id="one" method="POST" action="#">
<input type="text" name="rfc" />
<button type="submit" name="selection" value="1">Option 1 </button>
<button type="submit" name="selection" value="2">Option 2 </button>
<input type="submit" name="selection" value="4" />
</form>
<section id="new_section"></section>
<script>
$('#one').submit(function(event){
var data = $(this).serialize();
$.post('two.php', data)
.success(function(result){
$('#new_section').html(result);
})
.error(function(){
console.log('Error loading page');
})
return false;
});
</script>
在two.php中,我验证了rfc和选择字段的值
two.php
print_r($_POST);
print_r只显示rfc但不显示选择,输出如下:
数组([rfc] =&gt; WIRK510828)
这是因为动作=#?
而发生的答案 0 :(得分:0)
这是因为你应该单独传递按钮的值,因为serialize()没有取按钮值。
首先,您要为每个按钮添加ID和ID
使用serializeArray();
代替serialize()
。
在你的html上做这样的事情,它起作用我只是测试了它:
<form id="one" method="POST" action="#">
<input type="text" name="rfc" />
<button type="submit" id="button1" name="selection" value="1">Option 1 </button>
<button type="submit" id="button2" name="selection" value="2">Option 2 </button>
<button type="submit" id="button4" name="selection" value="4">option 4</button>
</form>
<section id="new_section"></section>
<script>
var frm = $('#one');
var data = frm.serializeArray();
$('#button1, #button2, #button4').on("click",function(e) {
e.preventDefault();
frm.submit(function(event){
$.post('two.php', data)
.success(function(result){
$('#new_section').html(result);
})
.error(function(){
console.log('Error loading page');
})
return false;
});
data.push({name: encodeURI($(this).attr('name')), value: encodeURI($(this).attr('value'))});
frm.submit();
data.pop();
});
</script>
<强>解释强>
我使用data.push();
将extradata(按钮值)推送到serializeArray();
,然后使用frm.submit()
发送表单,最后data.pop()
清除数组以供将来使用。我还添加了一些变量以便更好地实现。