0

AJAXリクエストと結果が成功しました。結果は、DOM内のテーブル行に配置したい単純なテキストです。以下はコードです:

xhr.onreadystatechange = function(event) {
    if (xhr.readyState === 4 && xhr.status === 200) {
      var results = xhr.responseText;
      var col = document.getElementById("tr_concept_0_1_32").getElementsByClassName("col_1")[0];
      col.innerHTML = results;
    }
    else {
      console.log(event);
      alert("something went wrong!: " + event);
    }
  };

DOMが変更されているのをreturn col.innerHTML = results;見ることができますが、すぐに以前の値に戻ります。

私はAJAXを初めて使用するため、「新しい値」がDOMに固執しない理由がよくわかりません。助言がありますか?

その他のコード:
更新されたボタン

form.form-search(id='searchForm')
      fieldset
        .input-append
          input.input-xxlarge.search-query#search(type='text', placeholder='Search', name='q')
          button.btn.submit(onclick='getParams(); return false;') Search

上記は、作業を行っているコードです。ユーザーはフォームのをクリックしますbutton。これが問題でしょうか?私はこの終わりから正しいものを扱っていませんか?

更新されたボタン 上記のコードはChromeでは正常に機能しますが、Firefoxでは機能しません。
Firefoxでは、投稿は返されますsuccessが、onreadystatechangeはトリガーされません。助言がありますか?

4

1 に答える 1

1

ボタンがAJAXを送信し、フォームを送信していると思います...したがって、ページを「再読み込み」します。したがって、値「reset」が表示されます。

ボタンがAJAXのみを送信する場合は、そのtype属性を「button」に変更するか、ハンドラーに使用onclick='getParams();return false;'します。onclick

同じことを行う方法は他にもありますが、私の提案では、を使用return false;すると、送信ボタンのデフォルトの動作である送信が防止されます。しかし、それは後なgetParams();ので、getParamsまだ呼び出され、必要なことを実行します-AJAX。

属性を「ボタン」に変更した場合type、送信する動作すらできないため、この問題は発生しません。

于 2013-02-27T14:59:11.903 に答える