3

我正在尝试在更改复选框时创建表单提交,我的代码如下所示。. 我的问题是什么都没有发生

gotofile.php

文件但//在成功函数上的dosomething被执行

jQuery:

$("#container input[type=checkbox]").change(function(e){
                if($(this).attr('checked')) 
                {

                    var cnType=$(this).attr("id");

                    $.ajax({
                        type: "POST",
                        url: "gotofile.php",
                        data: "typID="+cnType ,
                        cache: false,
                        success: function(){ 
                            //do something 
                        }
                    });
                }
            });

php:

include '../dbconnection/dbconfig.php';


$typeID=$_POST['typID'];
$qryConnections="INSERT INTO ...";
$rslt1 = mysql_query($qryConnections);

html

<form id="cnct" method="POST">
                            <div id="container" style="">
                                <ul style="list-style: none;">
                                   <li><input type="checkbox" id="1" />A</li>
                <li><input type="checkbox" id="2" />B</li>

                                </ul>
                            </div></form>

谁能帮助我做错了什么?

4

3 回答 3

2

几个安全问题

请始终记住,导航到您网站的任何人都可以查看您的 JS。使用:

data : "typID="+cnType

会让我认为 typID 是您的 SQL 中的字段。您没有 CSRF 过滤器,因此我可以编写一个 ajax 脚本来欺骗有效请求并从外部位置更新您的所有字段。需要记住的一点是,我建议您阅读 CSRF 或 Cross Site Request Forgery。

为什么你的脚本不起作用

如果成功函数正在触发,则脚本已运行。通过在 PHP 中输​​出 $_POST['typID'] 的值来调试它。如果发送正确,您将在控制台中看到变量值。

除此之外,让您的 PHP 为您的成功函数回显 JSON 响应以验证一切顺利,这总是很好的。

echo json_encode(array('response' => 'success'));

('response' => 'failed')或任何你需要的。然后,您可以在success函数中评估 JSON。

我希望这有帮助。

于 2012-07-27T07:30:06.980 回答
0

尝试

        $("#container input[type='checkbox']").click(function(e){

                var cnType=$(this).attr("id");

                $.ajax({
                    type: "POST",
                    url: "gotofile.php",
                    data: "typID="+cnType ,
                    cache: false,
                    success: function(){ 
                        //do something 
                    }
                });
         });
于 2012-07-27T07:47:50.977 回答
0

第一件事是您应该在 Jquery 代码中为复选框使用click而不是事件。change

第二件事,您没有为 html 代码中的复选框提供任何值。

请询问它是否不适合您。

于 2012-07-27T07:20:38.377 回答