0

送信されたクエリ文字列に従って検索を実行する cgi スクリプトを取得しました。それはすべてうまくいきます。ただし、検索には時間がかかり、ユーザーが別の検索を開始する可能性があるためです。2 番目の検索を開始する前に最初の検索を中止したいのですがxmlhttp.abort()、AJAXRequest 関数の先頭に a を挿入すると、cgi スクリプトがまったく開始されません。これをどのように実行できるか誰か教えてもらえますか?

前もって感謝します!

ここにAJAXコードスニペットがあります

var xmlhttp;
function AJAXRequest()
{

   if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   window.document.getElementById("resultlist").innerHTML=xmlhttp.responseText;
}
}
var queryString= "from=03-01-2006&to=04-30-2006&pattern=345";
xmlhttp.open("POST","../cgi-bin/search.exe?"+queryString);
xmlhttp.send();
}
4

2 に答える 2

0

私は自分の問題を見つけました。作成したばかりのリクエストオブジェクトを中止しようとしました。オブジェクトはグローバルである必要があります。少なくとも、これを達成する方法を私が理解する唯一の方法です。

于 2012-12-06T12:22:22.007 に答える
0

ええ、XMLHttpRequest.abort()AJAXリクエストの中止に使用する正しい方法です。私の意見では、あなたの問題はより一種の設計上の問題であり、技術的な問題ではありません。したがって、私の提案は、ユーザーがアプリケーションをどのように操作するかのフローを確認することです。たとえば、従来の解決策は、プログレスバーまたはスピナーを表示し、リクエストが完了していないときに[検索]ボタンを無効にして、成功またはエラー時にこの状態に戻すことです。

于 2012-12-06T11:08:59.677 に答える