gpt4 book ai didi

prototypejs - rails.js UJS 观察者错过的 form.submit()

转载 作者:行者123 更新时间:2023-12-03 17:21:06 24 4
gpt4 key购买 nike

在 Rails 3 应用程序中,我想让浏览器在切换某个复选框时调用远程函数。在 Rails 2 中,这很容易通过传递

:onclick => remote_function(...)

到复选框助手。在 Rails 3 中,不推荐使用 remote_* 函数,因此我尝试了以下解决方法:
  • 使用 form_tag ... :remote => true 在复选框周围创建一个表单
  • 调用 $("dummy_form").submit(); 提交表格来自 onclick处理程序

  • 在 Rails 捆绑的 rails.js 文件中,有一个观察者监听 submit事件。然而,这些似乎只在用户点击提交按钮时触发,而不是在 form.submit() 时触发。被调用(到目前为止仅在 FF 中测试过)。

    这会产生不良影响,即提交不是通过 AJAX 在后台完成,而是以正常方式完成,因此浏览器离开当前站点并显示来自 Controller 的响应。

    有谁知道解决方法?也许以完全不同的方式获得相同的功能?

    最佳答案

    您可以通过以下方式提交表单:

    $("dummy_form").request({
    onSuccess: function(response) {eval(response)}
    });

    这将使用 AJAX 将表单提交给给 form_tag 的 url 并评估收到的响应,因此它必须用 JS 响应。如果您不想要,请更改 onSuccess 实现。

    如果表单提交是一种解决方法,如您所说,那么除了提交整个表单之外,您还可以手动处理复选框上的点击事件并发送 AJAX request :
    <%= javascript_tag do %>
    Event.observe(window, 'load', function() {
    $('CHECK_BOX_ID').observe('click', function(event) {
    new Ajax.Request('/your/url', {
    onSuccess: function(response) {
    // yada yada yada
    }
    })
    });
    });

    关于prototypejs - rails.js UJS 观察者错过的 form.submit(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380592/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com