Rails中的j函数是做什么的?
我刚刚遇到了一个在Rails中提到j
function的博客。 他们正在使用它来做Ajax风格的页面更新。
$('#cart').html("<%=j render @cart %>");
我得到他们正在使用partials渲染cart
部分,但什么是j
? 我发现一些文章说,它将string转换为JavaScript可以接受的东西,但这是什么意思?
escape_javascript(javascript)
转义回车和JavaScript段的单引号和双引号。
也可以通过别名j()。
从rails文档 。
彼得实际上发布了正确的答案。 但我会尽力详细说明:
我猜你对ajax的基本概念很熟悉? 比方说,你想能够以ajaxy的方式创build评论。 在rails中,您可以通过以下方式响应您的CommentsController
POST请求:
def create @comment = Comment.new(params[:comment]) respond_to do |format| render.js end end
这意味着如果来自客户端的ajax请求(通过jQuery / JavaScript)被提交给CommentsController
,它将识别格式( .js
)并用_create.js.erb部分进行响应。 然后局部会用这样的东西渲染新的评论:
$('.comments').append("<%=j render @comment %>");
现在转到j或者escape_javascript方法:一些恶意用户可能会提交一个包含(恶意)javascript的注释,这个注释会在你的页面上执行, 除非你使用了j
方法
转义回车和JavaScript段的单引号和双引号。
并因此阻止浏览器中的代码的执行。