Jquery 为什么这里没有触发ajax请求?

Jquery 为什么这里没有触发ajax请求?,jquery,ruby-on-rails,ruby,ajax,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby,Ajax,Ruby On Rails 3,因此,我有一个自动完成字段,用户可以在其中选择现有标记或创建新标记。如果用户创建了一个新的标记,他按下表单按钮,它会向视频控制器中的更新操作发送一个POST请求,视频控制器会将该请求作为AJAX处理,标记会显示在字段上方 现在,问题是当用户从建议列表中选择标记时。默认情况下,jQueryUIAutoComplete插件将所选元素追加到字段中,然后用户必须按下表单按钮。但是,我想通过在从建议列表中选择标记时自动添加标记来为用户节省一些精力。因此,我的application.js文件中有以下代码:

因此,我有一个自动完成字段,用户可以在其中选择现有标记或创建新标记。如果用户创建了一个新的标记,他按下表单按钮,它会向视频控制器中的更新操作发送一个POST请求,视频控制器会将该请求作为AJAX处理,标记会显示在字段上方

现在,问题是当用户从建议列表中选择标记时。默认情况下,jQueryUIAutoComplete插件将所选元素追加到字段中,然后用户必须按下表单按钮。但是,我想通过在从建议列表中选择标记时自动添加标记来为用户节省一些精力。因此,我的application.js文件中有以下代码:

select: function(event, ui) {
           var url = $('.edit_video').attr('action');
           var val = ui.item.topic.name;
           $.ajax({type:"PUT", url:url, data:{video:{topic_names:val}}});
           return false;
        }
当从列表中选择一个元素时,它会成功地向更新操作发送PUT请求。但是,请求不是作为AJAX处理的。标记已成功添加,但仅在页面刷新后添加。我希望请求作为AJAX处理。我该怎么做


我猜问题与按下表单按钮时,
:remote=>true
选项告诉rails查找
format.js
(这是我在更新操作中看到的),但是当没有按下按钮,并且从列表中选择了一个元素时,rails不知道如何查找js。我如何让它知道?

保护你不被伪造可能会阻止你发帖。您可以使用Firebug(Firefox)进行检查。

我会检查Firefox中是否有其他绑定到$('.edit_video')的内容。您可能正在提交表单

此外,可以在浏览器上禁用JS,因此它将降级为非ajax


最后检查布局文件中是否有jQuery和。祝你好运。

我在这里假设,由于某些东西没有作为AJAX处理,你的意思是它没有呈现
view.js.erb
文件,而是呈现
view.html.erb
文件。您可以通过在JS中强制设置URL格式来解决此问题,如下所示:

var url = $('.edit_video').attr('action') + ".js";

然后将它发送到正确的格式,以供您采取行动

在Ajax请求中使用数据类型:“script”应该会有所帮助

.
.
$.ajax({type:"PUT", url:url, dataType: 'script', data:{video:{topic_names:val}}});
.
这将添加正确的标题,使rails能够识别正确的应答格式