2013-01-18 48 views
0

我有這個函數使用ajax,但是這個函數不起作用。我嘗試了很多,但我無法弄清楚問題出在哪裏。當用戶使用複選框選擇將重複條目插入數據庫時​​,我試圖創建警報。通過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

請不要將mysql_ *函數用於新代碼。它們不再被維護,並且[從PHP 5.5.0開始已棄用](http://php.net/manual/en/intro.mysql.php)。看到[紅色框](http://goo.gl/GPmFd)?相反,請了解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli) 。如果您不能決定,[本文](http://goo.gl/3gqF9)將幫助您選擇。如果你想學習,這裏是很好的[PDO教程](http://goo.gl/vFWnC)。 – peterm

+0

你是否收到任何錯誤?檢入錯誤控制檯 –

+0

不,我沒有收到任何錯誤,你能告訴我怎樣才能在錯誤控制檯中檢查它,因爲我不是很擅長於PHP – Durga

回答

1

在你的代碼有

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

既然你已經在迴應水庫超過你的ajax functie永遠不會只是'0'。它總是像eid{value}rid{value}0eid{value}rid{value}1

出於安全原因,也切換到mysqlipdo。同時檢查$eid$rid的值以符合您的期望。您的代碼易受攻擊SQL injection

在您的腳本代碼中,您有onclick="javascript:func(...)"onclick已經是一個JavaScript函數,所以你不需要的javascript:

+0

我已評論他們,我已經迴應他們只是爲了檢查我的問題 – Durga

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

是的,我試着按照你的建議,但不工作,甚至沒有得到任何錯誤 – Durga

+0

這是因爲你有其他錯誤需要解決。看看@ Hugo Delsing的回答 – Matanya

+0

另外,我建議你在你的ajax'success' func的開頭添加'console.log(result)'。這將顯示返回的數據,這將使調試更容易 – Matanya