【发布时间】:2017-06-08 06:01:09
【问题描述】:
我在一个表单中有这个 HTML 代码,我想检查这个用户输入的值是否已经存在于数据库中。
<tr height="50">
<td valign="top"><label for="CINumber"><span style="color:red">*</span>CI Name:</label></td>
<td><input type="text" id="CINumber" name="CINumber"></td>
</tr>
我有这个用于提交表单值的 ``JavaScript 函数:
function submit(){
var cNumber = document.getElementById("CINumber").value;
//many form value within this function but I showed this value only cause this value need to check when click submit button.
$.ajax({
url: 'PHPMethodCalls_AL.php',
type: 'post',
data: {'action':'AddNewCI', 'cNumber' : cNumber },
success: function(data,status) {
//alert(data);
if(status == "success"){
alert("CI Name can be assigned");
alert("Successfully Register New CI Record.");
} else {
alert("CI Name is already present!");
return ;
}
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
});
}
我在 'PHPMethodCalls_AL.php' url 中调用 PHPMethod 调用..
if($_POST['action'] == "AddNewCI"){
$cNumber = $_POST['cNumber'];
$newCI = AddNewCI($cNumber);
echo json_encode($newCI );
}
之后我调用PHP函数连接数据库。
function AddNewCI($cNumber){
global $DB;
if(!empty($cNumber)){
$namequery="SELECT Name from Item where Name='$cNumber'";
$namecheck=mysql_query($namequery);
$row=mysql_num_rows($namecheck);
if($row==0){
echo "success";
$strSql1 ="INSERT INTO Item (Name)VALUES('$cNumber')";
$res1 = $DB->Query($strSql1, false, $err_mess.__LINE__);
}
else {
echo "!success";
}
}
}
点击提交后,我只得到(状态==“成功”)然后弹出2个警告框,即使数据已经存在于数据库中。但是,重复值不会保存在数据库中,因为我为此字段设置了 UNIQUE。如果数据存在,请建议我如何获得正确的警报框,如果不存在则显示“已经存在”“显示成功警报框”...
【问题讨论】:
-
将
echo "success";更改为return "success";和echo "!success";更改为return "!success"; -
@B.Desai .. 嗯.. 甚至更改为 return 也不起作用 :(
-
不要使用 mysql_query ,不推荐使用 mysqli_query 或 PDO。
-
更改您的 ajax 成功条件 'if(data == "success"){ }' 因为您没有在数据中分配/提供状态变量。
-
@GaurangSondagar 当我更改时,'if(data == "success"),它只显示 else 条件,即使数据库中不存在数据但数据保存到数据库中但显示错误警告框。
标签: javascript php ajax database