情景介绍, 我花了一天多,坐在电脑前,怀着期待和绝望,把在linux下用HTML做前端登陆,CGI写后台程序,apache作为服务器,写的一个简单的登陆程序做好了。
期间遇到两大问题, 一个是怎么也访问不了cgi, 网页总是显示500错误(服务器错误);另一个是xml返回信息的字符串比较总是失败。
第一个问题, 我修改了CGI文件权限(755), 没用; 检查又修改了路径,没用。 后来,和以前写的成功案例对比,发现少了个头文件,stdlib, 使得getenv返回的是整数。修改后,少了个错误,但是500问题依然存在。 我想到了绝望。 后来,我用FF调试,看看传递给后台的QUERY_STRING信息是什么,发现其中有陌生的字段%27, 我检查了前端网页的代码,原来在对xml请求的脚本里,我把open中的请求信息用单引号括起来, 然而这里不需要单引号,
xmlHttp.open("GET", "../cgi-bin/record/logInServer.cgi?userName='" + userNameElem.value + "'&passWord='" + passwordElem.value + "'", false); 这样写是错误的, 红色标记的单引号应该去掉。
去掉后,500错误就没有了。
第二个问题, 把服务器返回来的信息和js中的字符串比较。
怎么比较, 我先创建了变量, 然后对返回来的信息进行空格消除,并赋值给该变量,最后和字符串比较。 比如:
var str;
str = xmlHttp.responseText.trim(); //消除空格
if(str == "查询成功")
{
.......
}
注意:
不能直接和"查询成功"比较,因为我接受的信息带有一个空格,也不能消除空格后直接比较, 因为typeof 消除空格后的类型的是未定义的。