【问题标题】:Multiple radio buttons ajax post多个单选按钮ajax帖子
【发布时间】:2012-11-18 21:13:06
【问题描述】:

我是网络编程新手,我真的需要你的帮助。我有一个带有几个单选按钮的表单,我想通过 ajax 帖子将它们插入 mysql。我可以为一个按钮做到这一点,但不止一个我不知道该怎么做。

这是我的 html 和 jquery 的一部分:

<html>
    <script>
        $(document).ready(function () {
            $("#submit").click(function () {
                var q1 = $('input[type="radio"]:checked').val();
                if ($('input[type="radio"]:checked').length == "0") {
                    alert("Select any value");
                } else {
                    $.ajax({
                        type: "POST",
                        url: "ajax-check.php",
                        data: "q1=" + q1,
                        success: function () {
                            $("#msg").addClass('bg');
                            $("#msg").html("value Entered");
                        }
                    });
                }
                return false;
            });
        });
    </script>
    </head>
    <body>
        <div id="msg"></div>
        <form method="post" action="">
            <div class="Clear">
                question1:bla bla bla
                <input class="star required" type="radio" name="q1" value="1" />
                <input class="star" type="radio" name="q1" value="2" />
                <input class="star" type="radio" name="q1" value="3" />
                <input class="star" type="radio" name="q1" value="4" />
                <input class="star" type="radio" name="q1" value="5" />
            </div>
            <br />
            <div class="Clear">
                question2:bla bla bla
                <input class="star required" type="radio" name="q2" value="1" />
                <input class="star" type="radio" name="q2" value="2" />
                <input class="star" type="radio" name="q2" value="3" />
                <input class="star" type="radio" name="q2" value="4" />
                <input class="star" type="radio" name="q2" value="5" />
            </div>
            <input type="submit" name="submit" id="submit" />
        </form>
    </body>
</html>

这是我在 mysql 中插入按钮的方法:

<?php
$query = mysql_connect("localhost", "root", "");
mysql_select_db('db', $query);

if (isset($_POST['q1'])) {
    $choice1 = $_POST['q1'];
    $choice2 = $_POST['q2'];
    mysql_query("INSERT INTO tb VALUES('','$choice1')");
}
?>

我尝试为每个按钮创建一个 var,但没有成功。 我如何在 php 中发布所有值,我应该将什么更改为我的 ajax 和 php? 谢谢!

这就是我做 .php 的方式

<?php
$query=mysql_connect("localhost","root","");
mysql_select_db('cosmote',$query);
$q = array();
for ($i = 1; $i <= 2; $i++) {
  $q[$i] = isset($_POST['q'+$i]) ? mysql_real_escape_string($_POST['q'+$i]) : 0;
}
mysql_query("INSERT INTO tabel (q1,q2) VALUES ('$q[1]','$q[2]')");
?>

【问题讨论】:

  • 格式化代码的方式非常糟糕。我很抱歉,但这是事实。你让自己和他人的阅读变得不必要地困难。代码只写一次,但要读很多次,所以应该非常小心地让它变得漂亮。我会在稍后的评论中发布它应该是什么样子。
  • 很抱歉,现在我正在学习,非常感谢您的建议和帮助我。我会焦急地等待你的评论。你太棒了!
  • HTML 和 JavaScript 应该是这样格式化的:pastebin.com/fZt7sUcY
  • 还有 PHP(它没有其他的那么糟糕):pastebin.com/ZhtxwCf1
  • 你说得对,现在更容易阅读并最终检测到错误。再次感谢!

标签: php javascript jquery html mysql


【解决方案1】:

好的,这是如何做到的。首先,在表单中添加id

<form id="myform" method="post" action="">

这将使通过 jQuery 访问更容易。然后,将序列化的表单作为 POST 数据传递给您的 PHP 脚本:

$(document).ready(function () {
    $("#submit").click(function () {                
        if ($('input[type="radio"]:checked').length == "0") {
            alert("Select any value");
        } else {
            $.ajax({
                type: "POST",
                url: "ajax-check.php",
                data: $("#myform").serialize(),
                success: function () {
                    $("#msg").addClass('bg');
                    $("#msg").html("value Entered");
                }
            });
        }
        return false;
    });
});

之后,您可以从 PHP 脚本中的 $_POST 数组中获取单选按钮值:

$_POST['q1'] // value of q1, can be 1-5
$_POST['q2'] // value of q1, can be 1-5

编辑: PHP 代码的问题在于您使用+ 而不是. 来连接字符串。改为这样写:

$q[$i] = isset($_POST['q'.$i]) ? mysql_real_escape_string($_POST['q'.$i]) : 0;

在这之后,我很确定它会起作用。

【讨论】:

  • 我看到您的编辑后来被删除(将其添加到问题而不是我的答案)。不要让初学者的错误让你灰心。一旦掌握了窍门,编程就会很有趣。
  • 好的,我马上添加,谢谢鼓励,不胜感激。
  • 我刚刚将解决方案添加到我的答案中。
  • 我不知道该怎么感谢你,你真的很好。你救了我!它奏效了。
【解决方案2】:

您可以在表单上使用.serialize(),它会为您提供表单的值,就像您定期提交表单一样data: $('form').serialize(),

【讨论】:

    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2011-01-09
    • 2014-12-14
    • 2019-06-05
    • 1970-01-01
    • 2022-12-06
    相关资源
    最近更新 更多