1

AJAXを使用して、ファイルを開き、それをDIVに出力するCGIスクリプトを呼び出します。

これは私が持っているテストページではうまく機能しますが、何らかの理由で別のページでコンテンツをDIVに出力してから、DIVをクリアします。alert()を使用すると、readystateが1,2,3,4,1,4から変化し、その後4回目にdivの内容がクリアされるのを確認できます。実際にはupdatepage()関数を2回呼び出しますが、2回目はDIVがクリアします。ファイアバグをチェックインすると、innerHTMLがコンテンツを持つものから""を持つものに変わります。

私のテストページでは、同じシーケンスのreadystateが発生しても、これは発生しません。

これが私が問題を抱えているコードのスニペットです:

self.xmlHttpReq.open('POST', cgiScript, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function()
 {
  if (self.xmlHttpReq.readyState == 4)
   {
    updatepage(self.xmlHttpReq.responseText);
   }
 }


function updatepage(str) 
   {
    document.getElementById("result").innerHTML = str;
   }

編集 !!!!!!!!!!!!!!!!!

何が悪いのかわかったと思いますが、理由はわかりません。

アンカーのhtmlhref=""が問題の原因でした。私がそれを削除すると、divは入力されたままになりました。

これにより、印刷後にDIVが消えます。

        <div class="menulinkboxes" id="listdiv">
        <a class="mainmenulinks"
        onclick='openFile("list,autos")'
        href="">auto-list</a>
        </div>

href=""をhref="#"に置き換えると修正されました。#はこのページを意味します

        <div class="menulinkboxes" id="listdiv">
        <a class="mainmenulinks"
        onclick='openFile("list,autos")'
        >auto-list</a>
        </div>
4

1 に答える 1

0

私はあなたがこれに答えたことを知っていますが、私はあなたの答えを素早く広げたと思いました.

href="#"

「#」はブラウザにアンカー タグを探すように指示するため、# 記号を空のままにしておくと、それ自体にアンカーされます。

また、innerHTML が問題を引き起こす可能性があり、DOM メソッドが非常に便利であることもわかりました。ただし、その値を取得するには、正常に機能するはずです。言及したかっただけです。

于 2011-07-19T19:40:31.710 に答える