【问题标题】:Mixing ajax and full requests混合 ajax 和完整请求
【发布时间】:2011-12-27 19:51:18
【问题描述】:

我有一个相同形式的 ajax 和完整请求。鼠标单击会在输入字段中触发 ajax,如果我在鼠标单击后立即在同一输入字段上按 enter,则会弹出一个令人讨厌的错误,如下所示。

“Http 传输返回 0 状态码。这通常是混合 ajax 和完整请求的结果。出于性能和数据完整性的原因,这通常是不希望的。”

在我的例子中,输入字段是一个使用 ajax 的单选按钮。按 enter 会导致完整的请求。 我使用了具有 event.stopPropagation() 的 BalusC 的 Javascript 函数,它对我有用,它用于文本输入字段。它也适用于下拉列表。 但是相同的 event.stopPropagation() 不适用于单选按钮。 您可以查看BalusC's answer 以供参考。

下面是我的一段代码,它似乎不起作用

<h:form id=blah...... onkeypress="enterToChange(event)">
....
</h:form>

Javascript 函数

function enterToChange(event){
if (event.keyCode==13 && event.target.id.match('radiobutton_id'){
event.stopPropagation(); // Don't bubble up.
event.preventDefault();  // Prevent default behaviour (submitting the form).
event.target.onchange(); // Trigger onchange where key was actually pressed.
}
}

我使用firebug看到if子句中的语句被执行了,但是由于某种原因仍然弹出错误并且立即渲染了整个页面。无论如何,我都需要避免错误。

非常感谢任何答案。 谢谢

【问题讨论】:

  • 它对我有用。也许您在&lt;h:select(One|Many)Radio&gt; 组件上有一个onchange="submit()"?请展示你的观点。
  • 问题已解决。按下 enter 正在调用 submit() 并且提交按钮没有 onclick。因此添加了 Javascript 函数以返回 false。感谢代码 BalusC
  • 将此作为答案发布并接受。这样做完全没问题。

标签: javascript ajax jsf


【解决方案1】:

Enter 一定要提交。因此,如果事件 keyCode 为 13 且事件目标 id 与单选按钮的事件目标 id 匹配,则提交按钮的 onclick 事件应该触发一个返回 false 的 JS 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-25
    • 2011-11-17
    • 2014-11-08
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多