AJAX发送错误信息

时间:2014-08-27 11:26:56

标签: javascript php jquery ajax

所以我有3个收音机按钮 使用不同的值,当我选择其中一个时,它总是给我值“3”或它们的最后一个值。我尝试提交没有ajax它的工作正常!

这是我的.js代码

$(document).ready(function(){

$('form').on('submit', function() {
    var that = $(this),
     url = that.attr('action'),
     type = that.attr('method') ,
     data  = {};

    that.find('[name]').each(function(index, value){
        var that = $(this),
        name = that.attr('name'),
        value = that.val();


        data[name] = value;
    });

        $.ajax({
        url: url,
        type: type,
        data: data, 
        success : function(rdata) {
              $("#st").html(rdata);
        }
    });

    return false;
});
});

这是我的HTML:

<form action="test.php" id="send" method="POST" accept-charset="UTF-8" autocomplete="off">
 <table>
    <tr><td><input type="radio" name="val" value="1">1</td></tr>
    <tr><td><input type="radio" name="val" value="2">2</td></tr>
    <tr><td><input type="radio" name="val" value="3">3</td></tr>
    <tr><td><input type="submit"></td></tr><tr><td><div id='st'></div>/td></tr>         

</table>

test.php:

if (isset($_POST['val'])) {
   $val = $_POST['val'];
   echo $val;
}

3 个答案:

答案 0 :(得分:1)

尝试使用以下代码段获取所选的单选按钮值 现在,您正在迭代所有单选按钮并发送按钮值的数据(因此始终发送每个()中的最后一个(。)

$('input[name=val]:checked').val()

我已用您填写的代码更新了答案:

$(document).ready(function(){

$('form').on('submit', function() {
    var that = $(this),
     url = that.attr('action'),
     type = that.attr('method') ,
     data  = {};

    data[name] = $('input[name=val]:checked').val();

        $.ajax({
        url: url,
        type: type,
        data: data, 
        success : function(rdata) {
              $("#st").html(rdata);
        }
    });

    return false;
});
});

答案 1 :(得分:1)

要简单地解决问题,您应该更改以下行:

..    
that.find('[name]:checked').each(function(index, value){
..

您在那里做的是迭代所有单选按钮,并始终将值分配给您的变量,无论单选按钮的选中状态如何。使用:checked修饰符,您告诉它只查看已检查的元素(实际上,在这种情况下,.each并不是必需的)。您可以像这样修改它(因为您通常只检查一个无线电),用以下代码替换.each迭代:

checkedRadio = that.find('[name]:checked');
name = checkedRadio.attr('name');
value = checkedRadio.val();

data[name] = value;

答案 2 :(得分:1)

工作演示: JSFiddle - You can check console network it is sending the data.

您想要获取已选中的单选按钮的值,以便您可以使用$('input[name=val]:checked').val()

尝试这样:

    $(document).ready(function(){

       $('form').on('submit', function() {
      var that = $(this),
      url = that.attr('action'),
      type = that.attr('method') ,
      data  = {};

      //data[name] = $('input[name=val]:checked').val();

        $.ajax({
           url: url,
           type: type,
           data: 'val = '+$('input[name=val]:checked').val();, 
           success : function(rdata) {
              $("#st").html(rdata);
           }
       });

      return false;
   });
 });

然后,您可以像这样获取test.php文件中的值:

if (isset($_POST['val'])) {
   $val = $_POST['val'];
   echo $val;
}