【问题标题】:Rails Ajax call on ajax uploaded imageRails Ajax 调用 ajax 上传的图像
【发布时间】:2013-12-24 10:21:40
【问题描述】:

我正在学习 Rails,并且了解 ajax 调用的工作原理。但是我有一个问题:我不知道如何将 DOM 中加载的对象上的 ajax 函数与另一个 ajax 函数绑定。

在我的演示页面中,我使用 Plupload 插件上传一些文件:当脚本完成上传我加载的文件时,我使用 ajax,预览窗口中的缩略图。一切正常。

        $("#multi_upload").pluploadQueue().bind('UploadComplete', function(up, files) {
          $.ajax({
            type: "GET",
            dataType: 'html',
            url: $('.wmk_grid#large_grid').data('gallery-url'),
            success: function(result) {
              $('.wmk_grid#large_grid').html(result);
            }
          });
        });
        $('.plupload_header').remove();
        }

每个缩略图都有一个“删除”按钮:在这个按钮上我附加了一个 rails ajax 调用来删除单个图片。

我的咖啡脚本是这样的:

$ ->
  $('.img_action_remove').bind 'ajax:success', (event, data, status, xhr) ->
    $(this).closest('li').remove()

我知道这个问题:当我加载我的页面时,我没有任何带有 .img_action_remove 类的项目:我在使用 plupload 上传图片时创建它们。

如何修复第二个 ajax 调用?

更新:已使用此脚本修复:

$(document).on "ajax:success", ".img_action_remove", (e) ->
  $(e.currentTarget).closest("li").remove()

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    JQuery Delegation

    当我加载我的页面时,我没有任何带有 .img_action_remove 的项目 类:我在使用 plupload 上传图片时创建它们

    $('document').on 'ajax:success', '.img_action_remove', (event, data, status, xhr) ->
        $(this).closest('li').remove()
    

    这会将事件绑定到文档并委托给类。意味着你可以随时创建类,并且JS应该总是捕获事件

    【讨论】:

    • @rickpeck 不工作。有没有办法调试这个?我尝试插入“警报”,但警报也不起作用。在我的开发人员工具中,ajax 请求的状态是 200 OK,并且图像已被删除,因此请求很好。
    • 我觉得我的情况和this类似
    • 嘿罗伯托,我实际上打算为我的答案写另一部分 - 我认为有一些修复需要应用于您的流程。我会在更新中为您解决它们 :)
    • 我修好了!!!但我想知道你的解决方案......我用这个gist解决了
    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2013-01-01
    相关资源
    最近更新 更多