我正在为我的网站开发一个注册表单。实际上,当一个访问者选择一个用户名,一个php查询我的MySQL数据库是用来控制,如果它已经使用,如果是这样,一个javascript窗口出现。我可以在Javascript中使用PHP查询来显示表单附近的实时通知(使用HTML5)吗?
<script>
var username = document.getElementById('username');
var userdb = <? php control_username($username); ?>
var checkUsername = function () {
if (userdb.value == true) {
username.setCustomValidity('Username already used');
} else {
username.setCustomValidity('');
}
};
username.addEventListener('change', checkUsername, false);
</script>
这里是PHP函数
<?php function control_username($username){
$db=connessione_db();
$query = "SELECT username FROM utente WHERE username = '$username';";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
mysql_close();
if($row[0]==$username){
return TRUE;
}
else{
return FALSE;
}
$query=NULL;
}
我该怎么办?
您可以使用AJAX或jQuery AJAX向php页面发送请求,检查用户名是否存在,返回结果,并再次使用Javascript显示。
下面是jQuery示例:<script>
$.ajax({
type: 'POST',
url : 'checkUsername.php',
data: {'username' : $('#username').html()},
cache : false,
success: function(data){
if(data == 'exists')
//username exists
alert('username already exists!');
},
error: function(request , status , error){
alert(request.resposeText);
}
});
</script>
,这应该是你的checkUsername.php文件:
<?php
$db=connessione_db();
$query = "SELECT count(*) as count FROM utente WHERE username = '$username'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
mysql_close();
if($row[count] > 0)
echo 'exists';
else
echo '';
PHP在服务器上运行,Javascript在客户端机器上运行。一旦PHP脚本生成了页面并将其发送给用户,它就不再运行了。您的客户端不了解PHP脚本。它不能直接运行、调用或读取关于PHP脚本的任何内容,因为它完全驻留在服务器上(而不是客户机上)。但是,客户机的机器知道您的javascript,因为它已经随页面一起发送了。如果希望从页面访问PHP功能,可以向服务器发送GET/POST调用并重新加载页面,或者使用AJAX在后台进行调用。查看Jquery的AJAX调用实现,它使使用AJAX调用变得非常简单。
不,你不能那样做。PHP是服务器端,Javascript是客户端。执行Javascript的时刻是代码在客户端工作的时刻。所有PHP代码都是固定的。将其与HTML页面中HTML和PHP的组合进行比较。这里也是固定的。Javascript中的PHP也是一样。
下面是一些关于stackoverflow的相关问题的答案:如何把php内javascript?如何在javascript中嵌入php ?下面是一个来自ajaxref的例子,展示了基础知识:http://ajaxref.com/ch3/asyncsend.html这是另一个演示如何处理ajax调用的教程:http://code.tutsplus.com/articles/how -与-生- ajax请求javascript -网- 4855
我建议你首先理解这个过程,然后开始使用像jQuery这样的框架。