我正在尝试在复选框更改时创建表单提交 我的代码如下。 。
我的问题没有发生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>
任何人都能帮我解决我做错的事吗?
答案 0 :(得分: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。
我希望这会有所帮助。
答案 1 :(得分:0)
首先,您应该使用click
而不是change
事件来获取Jquery代码中的复选框。
第二件事,你没有为你的html代码中的复选框提供任何价值。
请问它是否对您不起作用。
答案 2 :(得分: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
}
});
});