从php返回值到javascript

时间:2015-03-23 17:39:49

标签: javascript php

我正在编写注册/登录表单,我通过POST将用户信息发送到正在查找数据库的PHP。我想PHP会向js返回一个正确或错误的值,而我现在不知道怎么做。 在这里我的js:

    ui.onClick_regsubmit=function()
{
var fname=document.getElementById('fname').value;
var lname=document.getElementById('lname').value;
var password=document.getElementById('password').value;
var mail=document.getElementById('mail').value;
var affiliation=document.getElementById('affiliation').value;
var data = new FormData();
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
data.append("fname",fname);
data.append("lname",lname);
data.append("password",password);
data.append("mail",mail);
data.append("affiliation",affiliation);
xhr.open( 'post', 'PHP/registration.php', false );
xhr.send(data);
window.alert(affiliation);
}

和php:

<?php
     mysql_connect('localhost','root','') or die('Cannot connect mysql server');
       mysql_select_db('ChemAlive_login')  or die('cannot connect database');

   $lname=$_POST['lname'];
   $fname=$_POST['fname'];
  $password=$_POST['password'];
  $mail=$_POST['mail'];
  $affiliation=$_POST['affiliation'];

  $q=mysql_query("select * from login where mail='".$mail."' ") or die(mysql_error());
  $n=mysql_fetch_row($q);
  if($n>0)
{
  $q=mysql_query("select password  from login where mail='".$mail."' ");
  $pp=mysql_fetch_row($q);
  if($pp[0]=$password) echo "ok";
  else echo "wrong";
}
else
{   $insert=mysql_query("insert into login values('".$fname."','".$lname."','".$mail."','".$password."','".$affiliation."')") or die(mysql_error());}
?>

我想返回js这个正确或错误的值。怎么做?

3 个答案:

答案 0 :(得分:1)

xhr.onload=function()
{
 if (xhr.status==200) 
 {
  alert(xhr.response);
 }else
 {
  alert("unknown server error");
 }
}

如果服务器发送响应代码会更好,javascript会将此代码传输到文​​本中。例如:

onload=function()
{
 switch(xhr.response)
 {
  case "0":{alert("unknown error")};break;
  case "1":{alert("email is already used")};break;
  ...
 }
}

我认为很清楚

答案 1 :(得分:0)

我没有代表评论或我要求提供详细信息,但如果您可以考虑使用ajax,它可能看起来像这样:

PHP:

$doit = //your query;
if($doit){
$youdid = 'ok';
}
else{
exit('1');
}

JS:

$(document).ready(function () {

            var foo = $("#formfield")val();
            $.ajax({
                "foo":foo;
                type: 'POST',
                url: 'some.php',
                success: function(responseText) { 
if(responseText == "1") {
alert("Leave instantly");
};

}
else {
alert("One of us");
}

答案 2 :(得分:0)

如果你想要回答JavaScript的错误或错误,你可以在registration.php页面中做这样的事情:

 $q=mysql_query("select password  from login where mail='".$mail."' ");
 $pp=mysql_fetch_row($q);
   if($pp[0]=$password){ 
     header('Content-Type: application/json');
         echo json_encode(array('password' => 'ok'));
   }else{ 
     header('Content-Type: application/json');
         echo json_encode(array('password' => 'wrong'));
   }

我还没有完全测试这个,但想法是设置标头返回json,然后发送一个JSON字符串。

这有意义吗?

就像我在下面的评论中所说,我只使用jQuery for AJAX。但这里有一些关于XMLHttpRequest的知识,以及我对你如何测试你得到的东西的不确定性。

您可以在收到回复onreadystatechange时设置监听器,然后将响应放入变量var pass = xhr.response,然后将文本输出到alert框,如{ {1}}。

alert(pass.password)

详细了解XMLHttpRequest here

如果有效,请告诉我。