Ajax XMLHttpRequest sent()函数参数问题?是不是sent函数参数只能是字符串常量,不能是变量?
javascrpt中checkuser()函数定义如下:functioncheckuser(){varxmlhttp;varstr="user="+document.re...
javascrpt中checkuser()函数定义如下:
function checkuser()
{
var xmlhttp;
var str="user = " + document.register.user.value;
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("user_tip").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST", "checkuser.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str);
}
页面要验证的表单输入框如下:
<input type="text" name="user" id="user" size="18" onfocus="clsusertip()" onblur="checkuser()"/>
checkuser.php代码如下:
<?php
include("function.php");
connect_to_db();
if(!empty($_POST['user']))
{
echo $_POST['user']."<br />";
$user = $_POST['user'];
$sql = 'SELECT `user` FROM `users` WHERE `user`="'.$user.'"';
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{
echo '用户名已被注册!';
}
else
{
echo '恭喜!用户名可用!';
}
}
else
{
echo "错误的输入!";
}
?>
发现checkuser.php得不到$_POST['user']变量,其值为空,但是如果将javascript中最后一行改为xmlhttp.sent("user=teststr");后checkuser.php却能得到值为"teststr"的$_POST['user']变量,是不是sent()只能接受字符串常量为参数,不接受变量?
我该怎么让sent()接受变量参数?
问题已解决,send(str)中的字符串等号两边中不能含有空格,POST和GET方法都一样,比如用GET方法提交"checkuser.php?user = teststr"也会出错,正确应为"checkuser?user=teststr“。 展开
function checkuser()
{
var xmlhttp;
var str="user = " + document.register.user.value;
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("user_tip").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST", "checkuser.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str);
}
页面要验证的表单输入框如下:
<input type="text" name="user" id="user" size="18" onfocus="clsusertip()" onblur="checkuser()"/>
checkuser.php代码如下:
<?php
include("function.php");
connect_to_db();
if(!empty($_POST['user']))
{
echo $_POST['user']."<br />";
$user = $_POST['user'];
$sql = 'SELECT `user` FROM `users` WHERE `user`="'.$user.'"';
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{
echo '用户名已被注册!';
}
else
{
echo '恭喜!用户名可用!';
}
}
else
{
echo "错误的输入!";
}
?>
发现checkuser.php得不到$_POST['user']变量,其值为空,但是如果将javascript中最后一行改为xmlhttp.sent("user=teststr");后checkuser.php却能得到值为"teststr"的$_POST['user']变量,是不是sent()只能接受字符串常量为参数,不接受变量?
我该怎么让sent()接受变量参数?
问题已解决,send(str)中的字符串等号两边中不能含有空格,POST和GET方法都一样,比如用GET方法提交"checkuser.php?user = teststr"也会出错,正确应为"checkuser?user=teststr“。 展开
2个回答
展开全部
var str="user = " + document.register.user.value;
改成
var str="user = " + document.getElementById("user").value;
试试
改成
var str="user = " + document.getElementById("user").value;
试试
追问
试了,还是不行。
我又试了var str = "user = teststr";后面用xmlhttp.send(str);register.php都接收不到POST变量,而直接用xmlhttp.send("user = teststr");却可以,估计send()只支持字符串常量做参数,不知道他们用友好的户名检查怎么实现的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询