阿贾克斯。从查询中检索信息

时间:2016-03-13 19:52:38

标签: javascript php ajax

我现在真的很困惑,我对这一切都很新,只是在学习java脚本和php。我试图使用ajax检查数据库以查看电子邮件是否存在,然后是否取消提交表单。我似乎无法从XML中检索信息。我可能完全错了,但这就是为什么我在这里要求,倾斜

所以如果你能提供帮助就会很棒

JAVA SCRIPT



//validate the sign up/regiser form
function validateForm() {

  //Get password varibles 
  var pass = document.forms["signup"]["sign-up-password"].value;
  var confPass = document.forms["signup"]["password-confirm"].value;

  //Check if they match
  if (pass != confPass) {
      alert("Password does not match");
      return false;
  }

  //Ajax functions 
  if(xmlHttp.readyState==0 || xmlHttp.readyState==4){

    alert("im here");

    email = document.getElementById('email2').value;
    xmlHttp.open("GET", "php/ajaxCom.php?email=" + email, true);
    xmlHttp.onreadystatechange = handleServerResponse;

    xmlHttp.send(null);

  }else{
    setTimeout('process()',1000);
  }

}

function handleServerResponse(){
  if(xmlHttp.readyState==4){
    var check=xmlHttp.status;
    if(xmlHttp.status==200){
      alert("also here 2");
      xmlResponse = xmlHttp.responseXML;
      xmlDocumentElement = xmlResponse.documentElement;
      message = xmlDocumentElement.firstChild.data;

      alert(message);
      return message;
    }
  }
}




的PHP / XML



<?php
	$status;
	
if (isset($_GET['email'])) {
	$email_in_use = $_GET['email'];

	$query = mysqli_query($link, "SELECT * FROM users WHERE email='".$email_in_use."'");

	if(mysqli_num_rows($query) > 0){

	    $status = false;
	}else{
	    if( !mysqli_query( $link, $query ) )
		{ $status = mysqli_error( $link ); }
		else
		{ $status = true; }
	}

	$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" standalone="yes" ?><response><status/></response>');
	$xml->response->status = $status;
	echo $xml->asXML();
	echo $status;
}
?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您正在以不正确的方式构建和处理ajax XMLHttpRequest 此外,为了能够接收 XML 响应 - 设置额外的请求标题(将进一步显示)。
更改你的ajax请求,如下所示:

   var xmlHttp = null; // this variable should be global to access from different functions
   ...
   //Ajax functions 

    email = document.getElementById('email2').value;

    xmlHttp = new XMLHttpRequest();    
    xmlHttp.open("GET", "php/ajaxCom.php?email=" + email, true);
    xmlHttp.setRequestHeader("Accept", "text/xml");
    xmlHttp.onreadystatechange = handleServerResponse;
    xmlHttp.send(null);
...

function handleServerResponse(){  
  if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
      var check=xmlHttp.status;
      var xmlResponse = xmlHttp.responseXML;
      var xmlDocumentElement = xmlResponse.documentElement;
      message = xmlDocumentElement.firstChild.data;
      alert(message);
      return message;
  } else{
    setTimeout('process()',1000);
  }
}