当复选框改变时,如何使用Ajax提交表单?JQuery Ajax不起作用。

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);

the 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>

有谁能帮我看看我做错了什么吗?

这段内容涉及IT技术。

1
你的 PHP 在做什么?它没有输出任何内容。 - David Barker
你可能也想查看这个答案: https://dev59.com/WHNA5IYBdhLWcg3wmfAa - matpol
我添加了HTML代码,我的PHP将值插入数据库。 - rzShrestha
我已经得到了所选值,它运行良好,只是 PHP 的 POST 没有起作用。我在 AJAX 中做错了什么吗?因为我检查了 gotofile 并放置了虚拟值,它也可以正常工作。 - rzShrestha
3个回答

2

一些安全问题

请牢记您的JS代码是对任何访问您网站的人可见的。使用以下措施:

data : "typID="+cnType

这段话让我想到typID是你的SQL中的字段。你没有CSRF过滤器,因此我可以编写一个ajax脚本来欺骗有效请求并从外部位置更新你所有的字段。需要记住的是,我建议你了解一下CSRF或跨站请求伪造。

为什么你的脚本不起作用

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

此外,为了验证一切正常,最好让你的PHP输出一个JSON响应给你的成功函数。

echo json_encode(array('response' => 'success'));
('response' => 'failed') 或者其他你需要的内容。然后在您的success函数中评估JSON。希望这有所帮助。

谢谢,会考虑 CSRF 过滤器。 - rzShrestha

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 
                    }
                });
         });

0

首先,在您的Jquery代码中,应该使用click事件而不是change事件来处理复选框。

其次,在您的HTML代码中,您没有为复选框提供任何值。

如果这对您没有起作用,请恳请告知。


在Firebug中检查是否正在发送Ajax请求? - Arun Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接