为什么我需要在rails/ajax的远程链接上添加"data:{type:"script"}"

why*_*why 5 ujs ruby-on-rails-3.2

在我的一个项目中,代码:

  = link_to "add", new_me_category_path, class: "btn btn-success", remote: true
Run Code Online (Sandbox Code Playgroud)

可以正确加载远程表单.

但有些人无法工作,浏览器没有执行responese js代码.我需要像这样添加"data:{type:"script"}":

  = link_to "add", new_me_category_path, class: "btn btn-success", remote: true, data: {type: "script"}
Run Code Online (Sandbox Code Playgroud)

我想知道原因.

Kam*_*mil 4

我不是 JS 专家,也不了解 Ruby,但我认为:

当数据类型设置为script- 下载的代码将立即加载并执行。

当数据类型为默认 ( html) 时 - 下载的代码仅加载到浏览器中。您必须“手动”执行它(例如通过调用某个函数)。

如果您的代码只有一些与先前加载的代码一起使用的函数 - 这些函数将可用并且可以工作(当数据类型为 时html)。

如果您的代码中有已定义的事件 - 它们将不起作用,因为它们未初始化,因为代码未执行。

如果我的解释不好 - 您可以阅读有关jQuery.get()jQuery.getScript()方法之间的差异。