通过AJAX在数据库中存储值不起作用


Storing values in a database via AJAX not working

我有这个使用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>"; 

在你的代码中有

echo "eid".$eid;
$emprid=$_POST['emprid'];
echo "rid".$emprid;

因为你已经回显了结果,所以ajax函数永远不会只是'0'。通常是eid{value}rid{value}0eid{value}rid{value}1

也切换到mysql或pdo出于安全原因。还要检查$eid$rid的值是否符合您的期望。你的代码容易受到SQL注入的攻击。

在你的脚本代码你有onclick="javascript:func(...)"onclick已经是一个javascript函数,所以你不需要javascript:

您正在发送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;
}
}
});