我用C++编写了一个cgi脚本来将查询字符串返回给请求的ajax对象。 我还将查询字符串写入文件以查看cgi脚本是否正常工作。 但是,当我要求在HTML文档中的回应文本显示在一个消息框中我收到一条空白消息。从XMLHttpRequest对象获取responseText
这里是我的代码:
JS:
<script type = "text/javascript">
var XMLHttp;
if(navigator.appName == "Microsoft Internet Explorer") {
XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
XMLHttp = new XMLHttpRequest();
}
function getresponse() {
XMLHttp.open
("GET", "http://localhost/cgi-bin/AJAXTest?" + "fname=" +
document.getElementById('fname').value + "&sname=" +
document.getElementById('sname').value,true);
XMLHttp.send(null);
}
XMLHttp.onreadystatechange=function(){
if(XMLHttp.readyState == 4)
{
document.getElementById('response_area').innerHTML += XMLHttp.readyState;
var x= XMLHttp.responseText
alert(x)
}
}
</script>
First Names(s)<input onkeydown = "javascript: getresponse()"
id="fname" name="name"> <br>
Surname<input onkeydown = "javascript: getresponse();" id="sname">
<div id = "response_area">
</div>
C++:
int main() {
QFile log("log.txt");
if(!log.open(QIODevice::WriteOnly | QIODevice::Text))
{
return 1;
}
QTextStream outLog(&log);
QString QUERY_STRING= getenv("QUERY_STRING");
//if(QUERY_STRING!=NULL)
//{
cout<<"Content-type: text/plain\n\n"
<<"The Query String is: "
<< QUERY_STRING.toStdString()<< "\n";
outLog<<"Content-type: text/plain\n\n"
<<"The Query String is: "
<<QUERY_STRING<<endl;
//}
return 0;
}
我很高兴几乎所有的意见做什么!
编辑:输出到我的日志文件工作的很好:
Content-type: text/plain
The Query String is: fname=hello&sname=world
我只注意到,如果我用IE8打开它我得到的查询字符串。但只有在第一次“keydown”之后,IE才会无所作为。
感谢您的输入!我做了改变。但我仍然有同样的问题。 IE8给我返回查询字符串。但FF只是打开一个空白的消息框。你知道这可能来自哪里吗? – samoncode
@ Sammy46那么现在IE在每个按键上都获得文本吗? – Passerby
是的!它实际上是获取每个键上的文字。但我真的很想知道当我使用FF(版本10.0.7,如果这可以帮助?) – samoncode