无法通过ajax将带有单选按钮数据的额外表单数据传递给php

时间:2019-03-25 14:04:57

标签: javascript ajax

我有一个简单的表单,我有一个单选按钮和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},
        });
   });
});

3 个答案:

答案 0 :(得分:1)

您正在事件监听器中设置合同的价值,而不是idtable

要使它按当前的方式运行,还需要在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,
                    });
                });
            });