上下文: 我正忙于使用javascript检查表单中的字段。问题是要解决无法从数据库中检索数据的问题。除了确保其唯一(未在db中使用)用户名之外,所有检查都已完成。我在网上看了很长一段时间,但唯一接近的答案是:“直到你开始需要有问题的php页面来返回某种值。在这种情况下,只需使用YUI连接管理器或其他东西那种性质“。由于php是服务器端,当点击按钮时,可以调用php,因为在用户名字段中有文本之前处理php没有意义。
这就是我所做的。按下提交按钮时,将调用js函数。检查工作。
<script type="text/javascript" src="regform_checks.js"></script>
<h1>Welcome to Registration</h1>
<form name="register" action="add_user.php" onsubmit="return validateForm()" method="post">
<table>
<tr>
<td>Choose a username*</td>
<td><input type = "text" name="profile_id"/></td>
</tr>
以上是我的registration.php 以下是我的.js文件:
function validateForm()
{
var username=document.forms["register"]["profile_id"].value;
var pw1=document.forms["register"]["profile_password"].value;
var pw2=document.forms["register"]["profile_password2"].value;
var invalid = " "; // Invalid character is a space
var minLength2 = 3; // Minimum username length
var minLength = 6; // Minimum password length
var x=document.forms["register"]["profile_email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
//check for a value in username field
if (username==null || username=="")
{
alert("Please enter a username");
return false;
}
// check for username minimum length
if (document.register.profile_id.value.length < minLength2)
{
alert('Your username must be at least ' + minLength2 + ' characters long.');
return false;
}
// check for a value in both fields.
if (pw1 == "" || pw2 == "")
{
alert("Please enter your password in the Password and Re-enter password areas.");
return false;
}
// check for password minimum length
if (document.register.profile_password.value.length < minLength)
{
alert('Your password must be at least ' + minLength + ' characters long. Try again.');
return false;
}
// check for password consistency
if (pw1 != pw2)
{
alert ("The passwords you have entered are not the same. Please re-enter your password.");
return false;
}
//check for valid email address
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Not a valid e-mail address");
return false;
}
// check for spaces
if (document.register.profile_id.value.indexOf(invalid) > -1)
{
alert("Sorry, spaces are not allowed in your username.");
return false;
}
else if (document.register.profile_password.value.indexOf(invalid) > -1)
{
alert("Sorry, spaces are not allowed in your password.");
return false;
}
else if (document.register.profile_email.value.indexOf(invalid) > -1)
{
alert("Sorry, spaces are not allowed in your email.");
return false;
}
else
{
return true;
}
}
我无法做到的事情:设置一个js变量如下: var username_check = profile_id_check.php; 这个文件看起来像这样:
$query = "select profile_id from profile";
$result = mssql_query($query);
$names = array();
for ($count=0; $row=@mssql_fetch_array($result); $count++)
$names[$count]=$row;
$idtest= True;
foreach ($names as $name)
{
if($name[profile_id]==$profile_id)
return false;
print "$name[profile_id]";
}
?>
php代码仍在进行中,具体取决于它需要做什么 我意识到我不需要$ idtest,因为if语句返回一个布尔值。最后一个print语句只打印所有配置文件名称(因此我可以确保代码有效,并且确实如此)。并将其配置文件名称输入到需要与数据库中的所有配置文件名称进行比较的表单中,以确保它是唯一的。 结果我看到它的方式:如果用户名是唯一的,不给出任何错误或警告,如果不是,那么js必须......我知道如何编码。 虽然我的知识仅限于php,但有些js,我愿意接受远离这种方法的建议。 (显然是HTML) 提前谢谢。
答案 0 :(得分:1)
我认为您需要掌握有关如何在客户端和服务器之间来回传递数据的某些概念。你不能通过var username_check=profile_id_check.php;
来调用客户端的php文件。
可以通过request methods将数据传递到服务器。其中最常见的是$_POST
和$_GET
。看看下面的表单标签上的属性
<form name="register" action="add_user.php" onsubmit="return validateForm()" method="post">
操作设置为add_user.php,您的方法设置为post。因此,您可以使用name
数组访问服务器端具有$_POST
属性的表单元素。因此,作为add_user.php中的示例,您可以通过以下方式访问profile_id。
$profile_id = $_POST['profile_id'];
您可以通过ajax将数据发送回服务器的其他方式,但我建议通过常规HTTP请求获取数据的基础知识,然后再转到ajax。
答案 1 :(得分:0)
你应该对特定的php文件发出ajax请求并注册一个回调函数来处理php输出并设置你的变量。
像
/* code block #1 */
var username_check=profile_id_check.php;
/* code block #2 */
会被翻译成:
/* code block #1 */
var username_check;
ajaxCall({
url : 'profile_id_check.php',
callback : function(response){
username_check = response;
/* code block #2 */
}
});
答案 2 :(得分:0)
我不是100%肯定你在问什么,因为似乎有一点语言障碍问题,但看起来你问的是如何让你的JavaScript与你的PHP互动。
PHP是服务器端的。更重要的是,PHP不会作为服务器上的进程(通常是...)运行,因此当您运行脚本时,它是一次性的交易。这最终意味着当PHP脚本将输出呈现到屏幕时,脚本本身已经完成运行。 不坐在那里等待输入,比如控制台程序。
因此,您需要使用AJAX才能访问PHP脚本。什么是AJAX?简而言之,这是JavaScript将HTTP请求发送到服务器端脚本,接收这些请求的结果,然后动态使用DOM(文档对象模型 - 您的HTML)来显示这些结果的方法。
使用AJAX的最简单方法是使用jQuery非常优雅的AJAX函数:
http://api.jquery.com/jQuery.get/
http://api.jquery.com/jQuery.post/
最后一个想法:使用JavaScript进行表单验证不是一种安全措施。确保您的PHP脚本也有验证。