为什么需要添加“数据:{类型:”脚本“}”上轨远程链接/ AJAX(Why I need add “

2019-07-20 10:26发布

在我的一个项目,代码:

  = link_to "add", new_me_category_path, class: "btn btn-success", remote: true

可以正确加载远程形式。

但有些人可以不工作,浏览器没有执行responese js代码。 我需要添加“数据:{类型:‘脚本’}”是这样的:

  = link_to "add", new_me_category_path, class: "btn btn-success", remote: true, data: {type: "script"}

我想知道原因。

Answer 1:

我不是JS专家,我不知道红宝石,但我认为:

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

当数据类型是默认值( html ) -下载的代码只是加载到浏览器中。 你必须为“手动”执行它(通过调用例如某些功能)。

如果您的代码只是为了与以前加载代码中使用的一些功能-这些功能将可用,并且将工作(当数据类型是html )。

如果定义在你的代码的事件 - 他们不会工作,因为他们不会被初始化,监守没有执行代码。

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



Answer 2:

在幕后,jQuery的ajax方法用于: http://api.jquery.com/jquery.ajax/由UJS https://github.com/rails/jquery-ujs每当data-remote="true"的属性链接设置,这是做remote: true

如文档中所述,Ajax的确定HTTP接受头中发送并解释根据该返回值dataTypeaccepts传递到参数ajax()在这里被从所拍摄的data-通过UJS锚的属性。

如果没有dataType是通过设置data-type属性,jQuery的推论的请求和响应类型“智能”。 这可以解释不一致的,如果你没有明确指定它。



Answer 3:

如果您加载脚本正确的模板应该有.ejs扩展(或呈现原始脚本是这样的: render js: 'some code' )。 您必须使用转义HTML j在这样EJS模板:

template.ejs

$('some selector').html('<%= j render('some template') %>');

请你也给我的网址。 正确的应该结束.js



文章来源: Why I need add “data: {type: ”script“}” on remote link with rails / ajax