2016-06-30 48 views
0

我为客户名称创建了一个文本字段。已经注册的客户将在点击该文本字段时显示。只有注册的客户才可以输入数据。我使用了ajax来防止添加新用户。如何防止ajax响应错误时保存数据?

这是AJAX:

function validateForm() 
    { 
     var customerName = document.getElementById('customerName').value; 
     var customerId  = document.getElementById('customerId').value; 
     var getResponse=0; 

     var xmlhttp = new XMLHttpRequest(); 
      xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      // document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
      getResponse= xmlhttp.responseText;alert(getResponse); 

      if(getResponse=="0") 
      { 
       return false; 
      } 


      } 

     }; 

     xmlhttp.open("GET", "customer_check_ajax.php?name="+customerName+"&id="+customerId, true); 
     xmlhttp.send(); 

    } 

这里是AJAX页面customer_check_ajax.php:

<?php 
require("../../config/config.inc.php"); 
require("../../config/Database.class.php"); 
require("../../config/Application.class.php"); 
if($_SESSION['travelType']=='Admin') 
{ 
    $check = 1; 
} 
else 
{ 
    $check = ''; 
    $logId = $_SESSION['travelId']; 
    $proId = $_SESSION['proId']; 
    $check = "proId='$proId'"; 
} 

$cusName = $_REQUEST['name']; 
$cusId = $_REQUEST['id']; 

$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE); 
$qry="select * FROM ".TABLE_ACCOUNTS." WHERE ID='$cusId' and accountName='$cusName' and proId='$proId'"; 
$res = mysqli_query($connection, $qry);//echo $qry; 
$num = mysqli_num_rows($res); 
if($num>0) 
echo '1'; 
else 
echo '0'; 
?> 

在这里,我将获得已注册用户的响应为0,新用户和1 。但是我想在新用户添加时停止保存数据。请帮帮我。

+0

对不起,我不明白。你不是在这段代码中的任何地方保存数据?你可以编辑你的问题,使其更明显,你的问题是什么。谢谢 – RiggsFolly

回答

0

您正在异步请求和AJAX的答案会后的功能是在..

做你想做的,你必须做同步Ajax请求什么

xmlhttp.open("GET", "customer_check_ajax.php?name="+customerName+"&id="+customerId, false); // `false` makes the request synchronous 
+0

感谢您的评论。我做了你所说的。抱歉。新用户仍然可以添加和保存数据。 – Alisha

+0

我从ajax得到了正确的答复。但问题是,响应为'0'时,保存过程应该停止。但我的情况下,所有的数据都保存为新注册的用户。 – Alisha

+0

函数validateForm()在窗体中被调用onsubmit。所以所有的字段都在表单内部保存到数据库中。我在此表单中创建的customerName显示已注册的客户。但就我而言,新用户可以保存他们的详细信息,包括'NAME'。但是他们应该限制新的客户名称和储蓄。我想现在你可以理解我的prb。对? @ RiggsFolly – Alisha