嗨,我有一个 ajax 请求,我正在通过
ajax 向 PHP 文件发送一些请求,并且该请求正在生成结果,到目前为止一切正常,但现在我想为我的结果保留一些验证。 我正在动态添加的表行上执行此操作,因此如果不满足验证,则不允许添加新行,但在验证后仍在添加行任何人都可以帮助解决我的问题吗,谢谢这是我的代码
$("#savetodb").removeAttr("disabled");
var vendor = $("#sub_vendor_id"+rowcount+">option:selected").val();
var product = $("#prodid_"+rowcount).val();
var productname = $("#prod_"+rowcount).val();
var vouchdt = $("#dateinfo").val();
var qty = $("#quantity_"+rowcount).val();
var amt = $("#amount_"+rowcount).val();
$.get("../model/check_product_with_invoice_number.php", { invno : invoice, product : product, vendor : vendor, date : vouchdt, quantity : qty, amount : amt }, function (result) {
if(result == "") {
alert(productname+" Does not exist for invoice number "+id);
$("#savetodb").attr("disabled", "disabled");
}
if(result == 2) {
alert("Quantity "+ qty +" for "+productname+" does not exist for invoice number "+id);
$("#savetodb").attr("disabled", "disabled");
}
if(result == 3) {
alert("Amount "+amt +" For "+productname+" does not exist for invoice number "+id);
$("#savetodb").attr("disabled", "disabled");
}
if(result !=='' && result !==3 && result !==2){
$("#savetodb").removeAttr("disabled");
append_row('enable remove','',prods,unitid,unitcode);
}
});
这是我的PHP
$code = mysql_real_escape_string($_GET["invno"]);
$vendor = mysql_real_escape_string($_GET["vendor"]);
$product = mysql_real_escape_string($_GET["product"]);
$vouchdt = mysql_real_escape_string($_GET["date"]);
$amt = mysql_real_escape_string($_GET["amount"]);
$qty = mysql_real_escape_string($_GET["quantity"]);
$chkquantity = mysql_query("SELECT * FROM `gc_procurement_daily_detail` WHERE quantity_procured='".$qty."'
AND product_id='".$product."' AND sub_vendor_id='".$vendor."'")or die(mysql_error());
if(mysql_num_rows($chkquantity)> 0){
$chkamt = mysql_query("SELECT * FROM `gc_procurement_daily_detail` WHERE procured_detail_amount='".$amt."'
AND product_id='".$product."' AND sub_vendor_id='".$vendor."' AND quantity_procured='".$qty."'")or die(mysql_error());
if(mysql_num_rows($chkamt)>0){
$chkinvoice = mysql_query("SELECT a.*, b.* FROM `gc_procurement_daily_detail` a, `gc_procurement_daily_summary` b
WHERE a.sub_vendor_id='".$vendor."' AND a.product_id='".$product."' AND
a.quantity_procured='".$qty."' AND a.procured_detail_amount='".$amt."' AND
b.`date_of_invoice`='".$vouchdt."' AND b.invoice_number='".$code."' AND
a.`procurement_daily_summary_id`= b.procurement_daily_summary_id")or die(mysql_query());
$minv = mysql_fetch_object($chkinvoice);
$fininv = $minv->invoice_number;
if($code == $fininv){
echo 1;
exit;
}else{
echo '';
exit;
}
}else{
echo 3;
exit;
}
}else{
echo 2;
exit;
}
好的,
只需扭曲双引号内的 ajax 条件
if(result !=='' && result !=="3" && result !=="2")
这对他们所有人来说都是如此。
因为这个答案已被选为最佳答案我建议结合其他想法,你应该把你的条件链起来
if(){
}else if(){
}
依此类推或使用
Switch (result){
case 1:
//Do logic of this case here
break;
case 2:
//Do logic of this case here
break;
}
因此,只要您的条件达到,您就可以退出执行
就这样。
对于 js 部分,你可以为此使用一个开关:
switch(result){
case 2 : //error break;
case 3 : //error break;
case 4 : //error break;
default: //save stuff break;
}
改用 switch
语句,如下所示:
switch(result){
case '':
alert(productname+" Does not exist for invoice number "+id);
$("#savetodb").attr("disabled", "disabled");
break;
case '2':
alert("Quantity "+ qty +" for "+productname+" does not exist for invoice number "+id);
$("#savetodb").attr("disabled", "disabled");
break;
case '3':
alert("Amount "+amt +" For "+productname+" does not exist for invoice number "+id);
$("#savetodb").attr("disabled", "disabled");
break;
default:
$("#savetodb").removeAttr("disabled");
append_row('enable remove','',prods,unitid,unitcode);
break;
}
您的结果可能以字符串而不是整数的形式返回,因此您可能需要用引号将数字括起来。