更改复选框时的ajax发布表单jquery ajax不起作用

Posted

技术标签:

【中文标题】更改复选框时的ajax发布表单jquery ajax不起作用【英文标题】:ajax post form when checkbox is changed jquery ajax not working 【发布时间】:2012-07-25 20:32:41 【问题描述】:

我正在尝试在复选框更改时创建表单提交 我的代码如下。 .我的问题是

gotofile.php

file but //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>

谁能帮我解决我做错了什么?

【问题讨论】:

你的 PHP 在做什么?它不输出任何东西。 你可能也想看看这个答案:***.com/questions/901712/… 我也添加了 html 代码,我的 php 将值插入到数据库中 我得到了检查值,它的工作正常,只是 php postdosent 工作。我在 ajax 中做错了吗,因为我检查了 gotofile 放置虚拟值它工作正常 【参考方案1】:

几个安全问题

请始终牢记,导航到您网站的任何人都可以查看您的 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' =&gt; 'failed') 或任何您需要的。然后,您可以在 success 函数中评估 JSON。

我希望这会有所帮助。

【讨论】:

thanx 将看到 abt CSRF 过滤器【参考方案2】:

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

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

请询问它是否不适合您。

【讨论】:

在 firebug 中检查是否正在发送 ajax 请求?【参考方案3】:

试试

        $("#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 
                    
                );
         );

【讨论】:

以上是关于更改复选框时的ajax发布表单jquery ajax不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ajax jQuery 提交 Django 表单的简单方法

表单提交时的 jQuery 对话框和 ajax 登录

表单提交时的 jQuery Cookie

复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql

AJAX + PHP + 下载 mPDF 生成文件

jQuery Mobile,表单提交时的页面更改