返回的 RJS 代码不执行

发布于 2024-08-24 13:20:33 字数 1217 浏览 7 评论 0原文

我正在使用 jQuery 和 Rails。我正在尝试发出 PUT 请求来更新任务。呼叫成功。但是,返回的 javascript 代码不会执行。代码正常返回,但只是不执行。

这是我正在发出的 jQuery put 请求。

$("#droppable_<%= bin.id -%>").droppable({
      drop: function(event, ui) {
        div_ids = ui.draggable.attr('id').split('_');
        $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {

        });
      }
    });

这是 rjs 代码。

render :update do |page|
    page.alert 'success'
    page.remove "draggable_#{params[:id]}" if old_bin_id.to_s != params[:task][:bin_id]
    page.replace_html "count_#{old_bin_id}", current_user.tasks.bin(old_bin_id).size
    page.replace_html "count_#{params[:task][:bin_id]}", current_user.tasks.bin(params[:task][:bin_id]).size
end

这是我完成请求后得到的结果。

try {alert("success");jQuery("#draggable_2").remove();jQuery("#count_2").html("");jQuery("#count_3").html("2");} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('alert(\"success\");\njQuery(\"#draggable_2\").remove();\njQuery(\"#count_2\").html(\"\");\njQuery(\"#count_3\").html(\"2\");'); throw e }

这是正确的,但它只是不执行。知道为什么吗?

I am using jQuery with rails. I am trying to make a PUT request to update a task. The call is made successfully. However, the javascript code returned does not execute. The code is returned alright but it just does not execute.

Here is the jQuery put request i am making.

$("#droppable_<%= bin.id -%>").droppable({
      drop: function(event, ui) {
        div_ids = ui.draggable.attr('id').split('_');
        $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {

        });
      }
    });

This is the rjs code.

render :update do |page|
    page.alert 'success'
    page.remove "draggable_#{params[:id]}" if old_bin_id.to_s != params[:task][:bin_id]
    page.replace_html "count_#{old_bin_id}", current_user.tasks.bin(old_bin_id).size
    page.replace_html "count_#{params[:task][:bin_id]}", current_user.tasks.bin(params[:task][:bin_id]).size
end

This is what I get on completion of the request.

try {alert("success");jQuery("#draggable_2").remove();jQuery("#count_2").html("");jQuery("#count_3").html("2");} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('alert(\"success\");\njQuery(\"#draggable_2\").remove();\njQuery(\"#count_2\").html(\"\");\njQuery(\"#count_3\").html(\"2\");'); throw e }

Which is correct but it just does not execute. Any idea why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帝王念 2024-08-31 13:20:34

因为如果你想使用 jQuery 处理 rjs 有两种方法可以做到这一点:

$("#droppable_<%= bin.id -%>").droppable({
  drop: function(event, ui) {
    div_ids = ui.draggable.attr('id').split('_');
    $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {
       eval(data) #run js ajax returned
    });
  }
});

或者

$("#droppable_<%= bin.id -%>").droppable({
  drop: function(event, ui) {
    div_ids = ui.draggable.attr('id').split('_');
    $.ajax({
         url:'/tasks/' + div_ids[div_ids.length - 1],
         data: {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'},
         dataType: "script",
         type: "POST"
    });
  }
});

Because if you want to handle rjs using jQuery there are two way to do that:

$("#droppable_<%= bin.id -%>").droppable({
  drop: function(event, ui) {
    div_ids = ui.draggable.attr('id').split('_');
    $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {
       eval(data) #run js ajax returned
    });
  }
});

or

$("#droppable_<%= bin.id -%>").droppable({
  drop: function(event, ui) {
    div_ids = ui.draggable.attr('id').split('_');
    $.ajax({
         url:'/tasks/' + div_ids[div_ids.length - 1],
         data: {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'},
         dataType: "script",
         type: "POST"
    });
  }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文