0

書き込まれた値を(テキストエリアに)取得し、PHP ファイルで処理し(Ajax ポストで渡す) 、結果を外部 div に表示するために、 onkeydownイベントを使用しています... 問題は、毎回キーを押してください。Ajax がタスクを完了するまで、書き続けることはできません。テキストがまだ処理されていない場合でも、書き続けることができるようにするにはどうすればよいですか?

- -編集 - -

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;
}
4

3 に答える 3

5

asyncfalseに設定しました:

http[act].open('post', '/php/fromWCtoHTML.php',false);
                                               ^^^^^^

これにより、ブロックされます。そうしないでください。

ただし、ほとんどの人は、HTTP 要求を作成して応答を受信するよりも速く文字を入力できるため、キーを押すたびに要求を送信することはお勧めできません。

于 2012-08-09T13:31:05.780 に答える
2

http[act].open('post', '/php/fromWCtoHTML.php',false);

3番目のパラメータ[ 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;
    }
}
于 2012-08-09T13:33:06.743 に答える
1

XMLHttpRequest から onreadystatechange-Event を使用できますdocument.getElementById('AJAXWCtoHTML').innerHTML=http[act].responseText; 。匿名関数を入れて、イベント ハンドラーを設定するだけです。

于 2012-08-09T13:32:21.340 に答える