我有这个使用ajax的功能,但是这个功能不起作用。我尝试了很多,但我无法弄清楚问题出在哪里。当用户使用复选框选择将重复条目插入数据库时,我正在尝试创建警报。
<script>
function func(e,eid,emprid) {
if(document.getElementById(e).checked){
var dataString = 'eid=' + eid + '&emprid='+emprid;
$.ajax({
type:"POST",
url: "mylistcheck.php",
data: dataString,
success: function(result){
if(result!='0') {
modal.open({content: "<span style=\"color:red\" ><h2>You have already selected candidate </h2></span>"});
document.getElementById(e).checked=false;
}
}
});
}
}
</script>
mylistcheck.php
看起来像这样:
<?php require_once("includes/session.php"); ?>
<?php require_once("includes/connection.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php
$eid=$_POST['eid'];
$emprid=$_POST['emprid'];
$sqlchecklist="SELECT * FROM selected_candidate WHERE eid='{$eid}' AND rid='{$emprid}' ";
$checklistres=mysql_query($sqlchecklist);
$list_check=mysql_num_rows($checklistres);
echo "numrows listcheck".$list_check;
if($list_check>0) {
echo "1";
} else {
echo "0";
}
?>
复选框代码如下:
echo "<td><input id=\"select_candi{$i}\" onclick=\"javascript:func(this.id,{$data_set['eid']},{$emprid})\" type=\"checkbox\" name=\"check_candi[]\" value=\"{$data_set['eid']},{$emprid}\"/></td>";
答案 0 :(得分:1)
在您的代码中
echo "eid".$eid;
$emprid=$_POST['emprid'];
echo "rid".$emprid;
由于你已经回应了结果,你的ajax functie永远不会只是'0'。它总是类似于eid{value}rid{value}0
或eid{value}rid{value}1
出于安全原因,请切换到mysqli或pdo。同时检查$eid
和$rid
的值,以符合您的预期。您的代码易受SQL injection攻击。
在您的脚本代码中,您有onclick="javascript:func(...)"
。 onclick
已经是一个javascript函数,因此您不需要javascript:
答案 1 :(得分:0)
您正在发送 POST 请求,但数据以 GET 形式发送 - 即字符串。您需要将其作为对象发送:
$.ajax({
type:"POST",
url: "mylistcheck.php",
data: {"eid":eid,
"emprid":emprid}, // send an object
success: function(result){
if(result!='0')
{
modal.open({content: "<span style=\"color:red\" ><h2>You have already selected candidate </h2></span>"});
document.getElementById(e).checked=false;
}
}
});