Javascript 无法通过ajax将带有单选按钮数据的额外表单数据传递给php
我有一个简单的表单,我有一个单选按钮和两个隐藏字段。我想通过ajax将单选按钮值和隐藏字段值传递到php页面。单选按钮值可以正常通过,但隐藏字段不能。我在php页面中硬编码了table和id的值,以确保单选按钮的值通过测试Javascript 无法通过ajax将带有单选按钮数据的额外表单数据传递给php,javascript,ajax,Javascript,Ajax,我有一个简单的表单,我有一个单选按钮和两个隐藏字段。我想通过ajax将单选按钮值和隐藏字段值传递到php页面。单选按钮值可以正常通过,但隐藏字段不能。我在php页面中硬编码了table和id的值,以确保单选按钮的值通过测试 <input type="radio" name="contract" value="0" class="custom-switch-input"> <input type="radio" name="contract" value="1" class="c
<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},
});
});
});
您正在事件侦听器中设置contract的值,而不是id或table 要使其按当前的方式工作,还需要在dom中搜索隐藏字段的值
var contract = $(this).val();
var id = $('input[name="id"]').val();
var table = $('input[name="table"]').val();
首先需要从隐藏字段中获取值。就像您使用$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或table的字段。您的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,
});
});
});
如果我发布的答案还不够,试着将你的问题标记为javascript,看看你是否能得到更多的答案。这非常有效。我会按照你的建议将其改为首选方法。除了问题文本中缺少的问题外,请阅读:在问题标签中,这是不够的。你还尝试了什么,但失败了?请参考上的SO问题,了解它们为什么不能为您工作。另一个快速问题。如果我在同一页上有多个表单,不同的id,当用户通过单选按钮更改其中一个表单的值时,从DB循环,如何确保该表单与我前面的示例一起使用?此代码仅适用于此表单id=表单。如果您添加了另一个表单-更改另一个表单时不会发生任何事情。如何更改代码以使用用户选择的任何表单进行更改?编辑此问题的答案。现在,对页面上所有表单的更改进行代码触发。如果要指定操作,请使用If$this.id=='form1',这些id是根据数据库中的行数从ma while循环创建的。每个from获得下一个数字,即表单id=1表单id=2表单id=3。这个代码会去哪里?