我正在使用 onkeydown 事件来获取写入值(在textarea中),在PHP文件上处理它(通过Ajax传递它) post)并在外部div中显示结果... 问题是,每次按下键,我都无法继续写,直到Ajax完成任务。即使文本尚未处理,我怎样才能继续写作?
--- --- EDIT
function fromWCtoHTML(source){
var act = new Date();
http[act] = createRequestObject();
http[act].open('post', '/php/fromWCtoHTML.php',false);
http[act].setRequestHeader('Content-Type','application/x-www-form-urlencoded',false);
http[act].send("source=" + source);
document.getElementById('AJAXWCtoHTML').innerHTML=http[act].responseText;
}
答案 0 :(得分:5)
您已将async
设为false:
http[act].open('post', '/php/fromWCtoHTML.php',false);
^^^^^^
这使它阻止。不要那样做。
但是,请注意,大多数人可以更快地键入字符,然后可以发出HTTP请求并收到响应,因此每次按键发送请求都不是一个好主意。
答案 1 :(得分:2)
http[act].open('post', '/php/fromWCtoHTML.php',false);
第三个参数[false
]导致您的请求同步。
将其更改为true
或不包括它。
编辑评论的回复表明http [act] .responseText为空。
添加onreadystate
事件处理程序。请尝试以下代码
function fromWCtoHTML(source){
var act = new Date();
http[act] = createRequestObject();
http[act].open('post', '/php/fromWCtoHTML.php');
http[act].setRequestHeader('Content-Type','application/x-www-form-urlencoded',false);
http[act].send("source=" + source);
http[act].onreadystatechange=function(){
if (http[act].readyState==4 && xmlhttp.status==200)
{
document.getElementById('AJAXWCtoHTML').innerHTML=http[act].responseText;
}
}
答案 2 :(得分:1)
您可以使用XMLHttpRequest中的onreadystatechange-Event,只需将document.getElementById('AJAXWCtoHTML').innerHTML=http[act].responseText;
放入匿名函数中并设置事件处理程序。