【问题标题】:Submit value of a checkbox via jquery/ajax to php and insert into db通过 jquery/ajax 将复选框的值提交到 php 并插入到 db
【发布时间】:2014-11-09 23:20:34
【问题描述】:

我试图通过此处的搜索功能寻求帮助,但对类似问题的所有答案都过于详尽,我无法理解,即示例代码太复杂,我无法提取可能与我相关的部分问题:(

我有一个 html 表单,它通过 ajax 请求将数据表中特定行上的用户输入发送到 php 文件,输入被插入到我的 sqldb 中。 我可以发送用户输入的文本输入并传输其他信息,例如他们所在的特定行或用户的网络帐户。但我现在想添加一个复选框,以便用户可以选择他们的评论是私人的还是公开的。但是我不知何故无法从复选框传输值,没有错误,也没有将复选框数据插入数据库。 我必须以不同于文本区域的方式处理复选框吗?非常感谢您的帮助!

我的代码如下所示: html:

        function insertTextarea() {

                        var boardInfo = $( "<form id='boardComment'><textarea rows='2' cols='30'>Notizen? Fragen? Kommentare?</textarea>Privat:<input type='checkbox' name='privatcheckbox' value='private'><input type='submit' value='Submit'><input type='reset' value='Cancel'></form>");   

                        $( this ).parent().append(boardInfo);
                        $("tbody img").hide();

                        $("#boardComment").on( "submit", function( event ) {
                            event.preventDefault(); 
                            var change_id = {};
                            change_id['id'] = $(this).parent().attr("id");
                            change_id['comment'] = $(this).find("textarea").val();
                            change_id['privatecheckbox'] = $(this).find("checkbox").val();

                            if( $(this).find("textarea").val() ) {
                                $.ajax({
                                    type: "POST",
                                    url: "boardinfo.php",
                                    cache: false,
                                    data: change_id,
                                    success: function( response2 ) {
                                        alert("Your comment has been saved!");
                                        $("tbody img").show();
                                        $("#" + change_id['id']).find("form").remove();
                                    }
                                }); 
                            };
                        });

这是php部分:

$id = mysql_real_escape_string($_POST['id']);
$comment = mysql_real_escape_string($_POST['comment']);
$privatecheckbox = mysql_real_escape_string($_POST['privatecheckbox']);
$sql="INSERT INTO cerberus_board_info (BOARD_INFO_COMMENTS, BOARD_INFO_USER, BOARD_INFO_CHANGE_ID, BOARD_INFO_ENTRY_CHANNEL, BOARD_INFO_PRIVACY_LEVEL) VALUES ('$comment', '$ldapdata', '$id', 'Portal', '$privatecheckbox')"; 

【问题讨论】:

  • 不,没有!一切正常,只有复选框值没有提交到列中..

标签: php jquery ajax checkbox


【解决方案1】:

下面一行:

change_id['privatecheckbox'] = $(this).find("checkbox").val();

搜索带有标记名checkbox 的元素。这样的元素不存在,我相信您正在尝试搜索类型为checkbox&lt;input&gt; 元素。

以下内容应该适合您:

change_id['privatecheckbox'] = $(this).find("input[type=checkbox]").val();

或者更好的是:checkbox 伪选择器:

change_id['privatecheckbox'] = $(this).find(":checkbox").val();

最后一点:Why shouldn't I use mysql_* functions in PHP?

【讨论】:

  • 非常感谢!!!这看起来很有道理。但是,呃,我同时尝试自己进行一些编辑,现在我遇到了一个不同的问题,它总是插入一个默认值(不管复选框是否选中)——这是以前没有的。我也无法复制我是如何做到的,所以我必须按 ctrl+z 一段时间,直到我知道它是否有效:/ 但无论如何还是非常感谢你!
  • 如果您可以重现您的问题,只需提出另一个问题 :) 很高兴能提供帮助。
  • 编辑:我将它恢复到上述代码的位置,但它仍然无法正常工作。它插入除了复选框值之外的所有内容,它只是保持为空,叹息。
  • 您是否在请求之前检查过change_id['privatecheckbox'] 是否有价值?此外,您可以在此处利用 jQuery 的.serialize()
  • 你的意思是在数据库中设置的默认值吗?我不太确定我明白了!我在 html 复选框部分中定义的值如下: 并且我只想在选中时传输 value='private'。但它只是不传输任何东西:/再次非常感谢您的持续帮助!!!
猜你喜欢
  • 1970-01-01
  • 2017-04-01
  • 2012-10-28
  • 2013-02-12
  • 2018-12-03
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多