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

当我return col.innerHTML = results;可以看到 DOM 被修改时,它会很快恢复到以前的值。

我是 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 中,帖子返回successonreadystatechange不会触发。有什么建议么?

4

1 回答 1

1

我认为该按钮正在发送 AJAX,提交表单......因此“重新加载”页面 - 所以您会看到“重置”值。

如果您的按钮只会提交 AJAX,请将其type属性更改为“按钮”,或者onclick='getParams();return false;'用于其onclick处理程序。

还有其他方法可以做到这一点,但在我的建议中,使用return false;会阻止提交按钮的默认行为 - 提交。但由于它是 after getParams();getParams仍然被调用并做你需要的 - AJAX。

如果将type属性更改为“按钮”,它甚至不会有提交的行为,因此不会出现此问题。

于 2013-02-27T14:59:11.903 回答