单引号导致jquery mobile出现问题

时间:2012-07-26 11:08:21

标签: javascript ruby-on-rails jquery-mobile ruby-on-rails-3.1

我有一个视图,它试图将以下变量的链接呈现为文本:

<ul data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Search ideas...">
   <% @ideas.each do |idea| %>
     <li>
       <%= link_to(idea.name + " for " + idea.relationship.name, idea_path(idea) ) %>
     </li>
  <% end %>
</ul>

值idea.name(从PG SQL检索)中有一个引号。这在单击链接时导致javascript问题:

Uncaught SyntaxError: Unexpected identifier jquery-1.7.1.min.js:2
e.extend.globalEval jquery-1.7.1.min.js:2
e.extend.globalEval jquery-1.7.1.min.js:2
bp jquery-1.7.1.min.js:2
e.extend.each jquery-1.7.1.min.js:2
f.fn.extend.domManip jquery-1.7.1.min.js:4
f.fn.extend.append jquery-1.7.1.min.js:3
f.each.f.fn.(anonymous function) jquery-1.7.1.min.js:4
a.mobile.loadPage.a.mobile.allowCrossDomainPages.l.isSameDomain.a.ajax.success jquery.mobile-1.1.0.min.js:58
f.Callbacks.n jquery-1.7.1.min.js:2
f.Callbacks.o.fireWith jquery-1.7.1.min.js:2
w jquery-1.7.1.min.js:4
f.support.ajax.f.ajaxTransport.send.d

我尝试使用escape_javascript但未提供正确的结果(将\放在单引号前面,然后在浏览器中呈现该链接仍会导致错误。

我正在使用Rails 3.1,jQuery Mobile 1.1.0和jQuery 1.7.1。任何建议表示赞赏。

更新:这是响应在客户端中呈现的内容:

<ul data-role="listview" data-inset="true" data-filter="false">
   <li><a href="/ideas/34">toms shoes</a></li>
   <li><a href="/ideas/32">Toms shoes</a></li>
   <li><a href="/ideas/35">Remote controlled boat</a></li>
   <li><a href="/ideas/36">Toms Shoes</a></li>
   <li><a href="/ideas/33">Tom's shoes</a></li>
</ul>

这是最后一个有问题的项目(/ ideas / 33)。

1 个答案:

答案 0 :(得分:0)

我遇到了与jquery mobile类似的问题。
我有以下HTML:

<ul id="searchPanel" data-role="listview" data-filter="true" class="inputData" data-filter-reveal="true"
                    data-filter-placeholder="I'm looking for...">

JQM在DOM中将其呈现为:

<input data-type="search" placeholder="I" m="" looking="" for...'="" data-lastval="">

我的解决方案是使用'或'而不是单引号' 参考https://docs.webplatform.org/wiki/html/entities#HTML_Entities_Table
以下是紧密匹配,可用作撇号或单引号

&lsquo; OR &rsquo; OR &prime;

呈现为:'或'或''(所有三个都与单引号不同'但它们看起来相似)

因此,作为一种解决方法,您应该替换从PG SQL获得的文本中的单引号,并选择以上三个字符中的任何一个作为替换。