【问题标题】:Using Ajax to store checkbox in database使用 Ajax 将复选框存储在数据库中
【发布时间】:2016-09-01 03:19:38
【问题描述】:

更新:代码正在运行。我的 php 文件中有一个错误命名的表。

在我寻求帮助的过程中,我从一些 sn-ps 中找到了以下内容,但是我无法让它工作。我想要完成的是单击一个复选框,它会自动在我的数据库中填充一行,我可以在任何其他页面上引用该行。现在,当我单击复选框时,什么也没有发生。

HTML

<td><input type="checkbox" name="<?php echo $brow['WorkOrder']; ?>"  value="<?php echo $brow['WorkOrder']; ?>"></td>

阿贾克斯

     <!-- Checkbox storage -->
     <script>
     $(document).ready(function(){
        $("input[type='checkbox']").on('click', function(){
        var checked = $(this).attr('checked');
        if(checked){
            var value = $(this).val();
            $.post('functions/checkBox.php', { value:value }, function(data){
                // data = 0 - means that there was an error
                // data = 1 - means that everything is ok
                if(data == 1){
                    // Do something or do nothing :-)
                    alert('Data was saved in db!');
                }
            });
        }
        });
    });
    </script>

函数/checkBox.php

<?php
if ($_POST && isset($_POST['value'])) {

    // db connection
    include("../../db.php");

    // sanitize the value
    $value = mysql_real_escape_string($_POST['value']);

    // start the query
    $sql = "INSERT INTO TemporaryCheckBoxID (WorkOrder) VALUES ('$value')";

    // check if the query was executed
    if(mysql_query($sql)){
       // everything is Ok, the data was inserted
       print(1);    
    } else {
       // error happened
       print(0);
    }
}
?>

【问题讨论】:

  • 你能详细说明“什么都没发生”吗? JavaScript 代码中是否有错误?是否发出了 AJAX 请求?它有你期望的数据吗?服务器的响应是什么?运行时执行的 SQL 查询是什么? MySQL 服务器是否返回错误? (提示:你没有检查)在哪里/如何具体失败了?
  • 它不会发出警报,即使当出现错误并且没有显示任何内容时反转为 0 也会发出警报。 chrome 控制台中没有显示任何内容,也没有生成 error_log 文件。
  • 好的,所以它没有到达回调中的alert()。它做什么?有许多 if 语句嵌套了 alert()。也许其中之一是false?当你调试这个时,它在哪里失败了?
  • 这些复选框是在页面呈现时存在还是在之后创建?
  • @JohnLang:data 的运行时值是多少?如果if (data == 1) 为假,那么data 可能 等于 1 以外的值似乎是合理的。

标签: php jquery ajax checkbox


【解决方案1】:

检查复选框是否被选中,如下所示并尝试

<script>
     $(document).ready(function(){
        $("input[type='checkbox']").on('click', function(){
        var checked = $(this).is(":checked");
        if(checked){
            var value = $(this).val();
            $.post('functions/checkBox.php', { value:value }, function(data){
                // data = 0 - means that there was an error
                // data = 1 - means that everything is ok
                if(data == 1){
                    // Do something or do nothing :-)
                    alert('Data was saved in db!');
                }
            });
        }
        });
    });

【讨论】:

  • 相同的结果,没有警报发生
  • 能否在chrome开发者工具的network选项卡上查看ajax调用,点击复选框后查看是否成功,如果不成功则不会收到警报,如果无法检查网络选项卡..尝试使用$.ajax与成功和错误功能来检查ajax是否成功..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
相关资源
最近更新 更多