PHP的Javascript函数抛出“非法形式的XML语法”错误

时间:2012-06-01 22:00:35

标签: php javascript xml syntax-error

我正在尝试学习一些javascript而且我无法弄清楚为什么我的代码不正确(我确定我做错了大声笑),但无论如何我试图创建一个登录页面,以便当提交表单时,javascript将调用一个函数来检查登录是否在mysql数据库中,然后检查用户密码的有效性(如果存在)。但是我收到错误(非法形成的XML语法)我无法解决。我真的很困惑,主要是因为netbeans说这是一个xml语法错误而且我没有使用xml。这是有问题的代码:

function validateLogin(login){

  login.addEventListener("input", function() {
    $value = login.value;
    if (<?php
    //connect to mysql
    mysql_connect(host, user, pass) or die(mysql_error());
    echo("<script type='text/javascript'>");
    echo("alert('MYSQL Connected.');");
    echo("</script>");
    //select db
    mysql_select_db() or die(mysql_error());
    echo("<script type='text/javascript'>");
    echo("alert('MYSQL Database Selected.');");
    echo("</script>");
    //query
    $result = mysql_query("SELECT * FROM logins") or die(mysql_error()); 
    //check results against given login
    while($row = mysql_fetch_array($result)){
      if($row[login] == $value){
        echo("true");
        exit(0);
      }
    }
    echo("false");
    exit(0);
      ?>) {
      login.setCustomValidity("Invalid Login. Please Click 'Register' Below.")
    } else {
      login.setCustomValidity("")
    }

  });
}

代码在外部js文件中,错误抛出最后一行。另外从阅读我明白最好的做法是不混合js和PHP所以我如何分离它们,但保持我需要的功能? 谢谢!

2 个答案:

答案 0 :(得分:2)

你不能以这种方式混合使用PHP和JavaScript,因为在客户端执行任何之前,已经在服务器上执行了PHP的所有。< / p>

错误是因为客户端正在接收并且无法以JavaScript形式执行此操作:

function validateLogin(login){

  login.addEventListener("input", function() {
    $value = login.value;
    if (<script type='text/javascript'>alert('MYSQL Connected.');</script>...
// etc.

要从客户端与PHP交互,您必须发出另一个HTTP请求 - 通过<a>点击,<form>提交或Ajax请求(使用jQuery.post以简化;有关详细信息,请参阅Using XMLHttpRequest

function validateLogin(login){
  login.addEventListener("input", function() {
    $.post('/validateLogin.php', { login: login }, function (result) {
      if (result === "true") {
        login.setCustomValidity("Invalid Login. Please Click 'Register' Below.")
      } else {
        login.setCustomValidity("")
      }
    });
  });
}

根据需要调整网址/validateLogin.php;但为此URL创建一个PHP文件,类似于:

<?php
$value = $_POST['login'];

mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db() or die(mysql_error());

$result = mysql_query("SELECT * FROM logins") or die(mysql_error());
while($row = mysql_fetch_array($result)){
  if($row[login] == $value){
    echo("true");
    exit(0);
  }
}
echo("false");
exit(0);
?>

答案 1 :(得分:-1)

有什么问题?您只需将<script>部分插入if条件即可中断JavaScript。所以你得到if (<script type='text/javascript'>alert('MYSQL Connected.');</script>...等等......接下来的事情:你试图将$value(JavaScript变量)与PHP循环中的$row[login]匹配 - 你没有{ {1}}那里!这些是分开的代码。这都错了。

Jonathan Lonowski解释说你应该如何做到这一点非常好。