我正在尝试学习一些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所以我如何分离它们,但保持我需要的功能? 谢谢!
答案 0 :(得分:2)
你不能以这种方式混合使用PHP和JavaScript,因为在客户端执行任何的之前,已经在服务器上执行了PHP的所有。< / p>
错误是因为客户端正在接收并且无法以JavaScript形式执行此操作: 要从客户端与PHP交互,您必须发出另一个HTTP请求 - 通过 根据需要调整网址function validateLogin(login){
login.addEventListener("input", function() {
$value = login.value;
if (<script type='text/javascript'>alert('MYSQL Connected.');</script>...
// etc.
<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解释说你应该如何做到这一点非常好。