我有一个简单的表单,我有一个单选按钮和2个隐藏字段。我想通过ajax将单选按钮值和隐藏字段值传递给php页面。单选按钮的值可以通过,但隐藏字段不能通过。我已经在php页面中对表和ID的值进行了硬编码,以确保将单选按钮的值传递给测试。
<input type="radio" name="contract" value="0" class="custom-switch-input">
<input type="radio" name="contract" value="1" class="custom-switch-input">
<input type="radio" name="contract" value="2" class="custom-switch-input">
<input type="hidden" name="table" value="timber_sales">
<input type="hidden" name="id" value="177">
$(document).ready(function(){
$('input[type="radio"]').click(function(){
var contract = $(this).val();
$.ajax({
url:"edit_do.php",
method:"POST",
data:{contract:contract,id:id,table:table},
});
});
});
答案 0 :(得分:1)
您正在事件监听器中设置合同的价值,而不是id
或table
。
要使它按当前的方式运行,还需要在dom中搜索隐藏字段的值。
var contract = $(this).val();
var id = $('input[name="id"]').val();
var table = $('input[name="table"]').val();
答案 1 :(得分:0)
您需要首先从隐藏字段中获取值。就像您使用$(this).val()
设置单选按钮的值一样。所以:
$(document).ready(function(){
$('input[type="radio"]').click(function(){
var contract = $(this).val();
var id = $('input[name=id]').val();
var table = $('input[name=table]').val();
$.ajax({
url:"edit_do.php",
method:"POST",
data:{
contract: contract,
id:id,
table:table
},
});
});
});
最好为隐藏字段赋予唯一的ID属性,并使其通过$('#myuniqueid').val()
,但至少在没有其他名为ID或表的字段的情况下,上述工作才能完成。
答案 2 :(得分:0)
您的jquery事件不了解隐藏字段。试试这个:
<form id="form1">
<input type="radio" name="contract" value="0" class="custom-switch-input">
<input type="radio" name="contract" value="1" class="custom-switch-input">
<input type="radio" name="contract" value="2" class="custom-switch-input">
<input type="hidden" name="table" value="timber_sales">
<input type="hidden" name="id" value="177">
</form>
<form id="form2">
<input type="radio" name="contract" value="0" class="custom-switch-input">
<input type="radio" name="contract" value="1" class="custom-switch-input">
<input type="radio" name="contract" value="2" class="custom-switch-input">
<input type="hidden" name="table" value="timber_sales">
<input type="hidden" name="id" value="177">
</form>
$(document).ready(function(){
$('form').change(function(){
event.preventDefault();
var send = $(this).data();
$.ajax({
url:"edit_do.php",
method:"POST",
data:send,
});
});
});