所以,首先,我要列出我引用的3段代码。
HTML:
<div id='newuserpage'>
<h1><font color='white'>Create New User</font></h1>
<div id='userbody'>
<div id='userfields'>
<div id='usernamelabel'>
<font color='white'>Enter Username:</font>
<input id='createfield1' type='text'>
</div>
<div id='passwordlabel'>
<font color='white'>Enter Password:</font>
<input id='createfield2' type='password'>
</div>
<div id='usertype'>
<br>
<font color='white'>User Type:</font>
<select name="typeofuser" id='type'>
<option value="2">Student</option>
<option value="1">Teacher</option>
</select>
<br><br>
</div>
<button id = 'newuserbutton' onclick='createuser()'>
Submit
</button>
<button id = 'backtomenu' onclick = 'backtomenu()'>
Back to Teacher Menu
</button>
Javascript功能
function createuser()
{
var newuser;
var newpass;
// check browser type
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
newuser = document.getElementById("createfield1").value;
newpass = document.getElementById("createfield2").value;
xmlhttp.onreadystatechange = function() {
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
if (xmlhttp.responseText == '1') { //Connected properly
var createdmessage= document.getElementById('createdmessage');
createdmessage.style.visibility= 'visible';
}
if (xmlhttp.responseText == '2') {
var loginpage = document.getElementById('loginbox');
loginpage.style.display = 'block';
}
else {
// show error message
loginlabelerror.style.visibility = 'visible';
}
}
}
// call php function
xmlhttp.open("GET","createuser.php");
xmlhttp.send("username=" + encodeURIComponent(newuser) + "&password=" + encodeURIComponent(newpass));
//var createdmessage= document.getElementById('createdmessage');
//createdmessage.style.visibility= 'visible';
}
处理插入的PHP页面
<?php
$q=$_GET["username"];
$p=$_GET["password"];
$t=$_GET["type"];
$host="xxx"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="xxx"; // Database name
// Connect to server and select databse.
$link = mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name",$link)or die("cannot select DB");
$sql="INSERT INTO users (username, password, type) VALUES('".$q."', '".$p."', 2)";
$retval = mysql_query($sql);
if(! $retval)
{
echo 2;
}
echo 1;
mysql_close($link);
?>
我遇到的问题是,它实际上从未实际从createfield1和createfield2输入区域中提取值。它只是将空字符串抛出到数据库中。
(忽略下拉菜单,这是我们一直在玩的东西,但并不是真的需要。)
据我所知,可以在网上找到,我做过的工作应该是什么?除非我完全误解了某些内容,否则我不知道为什么它实际上没有检索输入到输入字段中的值。
出于外部源的演示目的,我想要允许空白字段作为&#34; passthrough&#34;它实际上并没有做任何事情。手头的问题是,即使有一个例子:
ASDF
1234
进入两个输入字段,当按钮调用函数发送要插入的信息时,它不会提取这些值,而只是使用空字符串。我不希望值检查需要它不使用空字符串,人们会认为应该在字段中提取值。
答案 0 :(得分:0)
稍微偏离主题,创作活动应始终发布,而不是获取。 http://www.w3schools.com/tags/ref_httpmethods.asp(有更多有信誉的消息来源,但即使他们同意)
更重要的是......修改您的发送电话..
xmlhttp.open("GET","createuser.php");
是
xmlhttp.open("GET","createuser.php?username=" + encodeURIComponent(newuser) + "&password=" + encodeURIComponent(newpass));
您仍然需要调用send方法。
考虑改为发帖请求:http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp
至少对我来说,post / get的首要原因是get可以在没有提示的情况下重新运行。帖子至少会警告用户,当涉及到帐户创建时,会发出警告。