gpt4 book ai didi

ruby-on-rails - Rails UJS link_to :remote does AJAX GET and normal GET

转载 作者:行者123 更新时间:2023-12-01 06:15:51 24 4
gpt4 key购买 nike

编辑:

除了下面有用的评论之外,Steve Schwartz 的两篇优秀文章清楚地解释了一切:

Rails 3.2.2/jquery-rails 2.0.1 (使用 jquery 1.7.1)

我有一个链接,它发送 AJAX 请求以将其他文件上传字段添加到表单中。 所有与页面相关的内容都正常工作 - 从服务器检索新的表单字段 HTML 片段并将其附加到表单内的 div 中。

但是,

服务器收到两个 GET 请求。一是AJAX请求;另一个似乎是“正常” anchor 元素 GET。我预计“正常”的 GET 会被 Rails UJS 停止。

我应该自己禁用正常的链接操作吗?有人可以解释一下我误解了什么,以及我应该做什么[以防止第二次请求]?

我见过这个问题:Rails 3 UJS - controller gets called twice by link_to :remote 。因此,我尝试更改 Assets 管道编译config.assets.debug = false,但没有效果。而且,这不是双 AJAX GET 请求,所以我认为这是一个不同的问题。

感谢您的帮助!

服务器日志片段:

Started GET "/files/new?asset_number=2" for 127.0.0.1 at 2012-03-23 15:23:27 +0100

Started GET "/files/new" for 127.0.0.1 at 2012-03-23 15:23:27 +0100

浏览器 HTML:

<a href="/files/new" data-remote="true" id="add_another_file" position="after" update="files">Add another file</a>

查看:

<%= link_to 'Add another file', new_file_path, :remote   => true,
:update => 'files',
:position => 'after',
:id => 'add_another_file' %>

Controller 的 CoffeeScript :

$( ->
$('a#add_another_file').click( ->
url = '/files/new?asset_number=' + $('#files input').length
$.get(url, ((data) -> $('#files').append(data)), 'html')))

最佳答案

如果您要向 a#add_another_file 添加 click 事件,则无需使用 :remote => true ,因为您正在手动发出 Ajax 请求。

此外,click 事件应防止发生默认操作。这可以通过将 event.preventDefault(); 添加到 click 事件回调的开头来实现。请注意,回调需要接受事件参数。

关于ruby-on-rails - Rails UJS link_to :remote does AJAX GET and normal <a href> GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841219/

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