我正在使用jquery draggable和droppable函数。因此,当删除元素时,将启动ajax调用,将参数作为查询字符串传递。我知道如何传递查询字符串。但我需要在查询字符串参数中进行一些条件检查。我不知道怎么做。请在下面找到我的代码。
jQuery('#<%= qtr %>').droppable({
hoverclass: 'e_high',
accept: function(elm) {
if (jQuery(this).hasClass('<%=name%>_edit'))
return true;
},
drop: function() {
jQuery.ajax({
type: "POST",
url: '/sections/reorder?site_id=<%=@site.id%>&page=<%=@page%>?<%=@page.id%>:nil&ref_id=<%=section.id%>&name=<%=name%>'
上面传递查询字符串的方法是否正确。我收到No方法错误。无对象。当我检查终端时,参数是参数:{"page"=>"", "site_id"=>"11650ecf55668fed9e7a624c93adcba2"}
答案 0 :(得分:1)
首先,你的三元问号和冒号位于错误的位置,它们应该在里面 ERB分隔符。你最好在这里使用$.ajax
的data
选项;这不仅会更干净,而且会阻止您在POST请求中使用GET参数。您应该使用escape_javascript
来逃避使用JavaScript的价值。试试这样:
jQuery.ajax({
type: "POST",
url: '/sections/reorder',
data: {
site_id: '<%= j(@site.id) %>',
page: '<%= j(@page ? @page.id : '') %>',
ref_id: '%<= j(section.id) %>',
name: '%<= j(name) %>'
},
//...
这当然假设ERB中的section
和name
可用作Ruby变量而不是客户端JavaScript变量。
如果由于某种原因你必须使用带有POST请求的GET查询字符串,那么你需要这样的东西:
url: '/sections/reorder?site_id=<%= j(@site.id) %>&page=<%= j(@page ? @page.id : '') %>&ref_id=<%= j(section.id) %>&name=<%= j(name) %>'