【问题标题】:unterminated string literal when loading text through ajax通过ajax加载文本时未终止的字符串文字
【发布时间】:2011-04-01 08:34:30
【问题描述】:

这似乎是来自不同语言的编码人员的常见问题。

我正在使用 jQuery 将 AJAX 文本拉入屏幕,但 firebug 报告了一个

unterminated string literal 举个毫无价值的例子:

$("#content").html("<div class=\'grid_...g\'><\/div>\n<p>Cold Seafood Platters\n

我在我的 AJAX 示例文本中仔细检查了是否有任何 ',这会以某种方式炸毁它,但我将它们全部删除,它仍然无法解析。

有没有人遇到过这个错误并想出如何处理它?

更新:

调用这个的助手:

def hq_nav_select(name, url)
  if current_page? url
    content_tag(:li, "<br /> #{link_to(sanitize(name, :tags => 'img'), url, :class => 'hq_nav_link')}", :class => 'selected')
  else
    content_tag(:li, "<br /> #{link_to(sanitize(name, :tags => 'img'), url, :class => 'hq_nav_link')}")
  end
end

JS:

$(".hq_nav_link").live("click", function(){
    $.ajax({type: "GET", url: $(this).attr("href"), dataType: "script"});
    return false;
});

触发 show.js.haml

== $("#content").html("#{ escape_javascript(render :partial => 'tab') }");

然后加载作为最终文本的部分

轰炸文本示例:

Cold Seafood Platters

&lt;br /&gt;\r\nClassic Shrimp Cocktail 
&lt;br /&gt;\r\nThe shrimp that we are known for: large or jumbo, tender and tasty shrimp, steamed to order, beautifully arranged and garnished with our homemade cocktail sauce and lemon wedges. 
Medium: Serves 8 &amp;ndash; 6
&lt;br /&gt;\r\nLarge: Serves 16 &amp;ndash; 20

&lt;br /&gt;\r\n&lt;br /&gt;\r\nStone Crab Claws (Seasonal) 
&lt;br /&gt;\r\nDirect from Key West, Florida! Get them while you can! Garnished to impress and served with our homemade honey mustard sauce. 
&lt;br /&gt;\r\nLarge: Serves 8 - 10

&lt;br /&gt;\r\n&lt;br /&gt;\r\nMixed Seafood Royale
&lt;br /&gt;\r\nThe platter to end all party platters! A generous offering of Lobster Meat, Jumbo Shrimp, and Cocktail Crab Claws, served with a trio of homemade dipping sauces. 
&lt;br /&gt;\r\nMedium: Serves 6 - 8
&lt;br /&gt;\r\nLarge: Serves 12 - 15

&lt;br /&gt;\r\n&lt;br /&gt;\r\nPoached Salmon
&lt;br /&gt;\r\nBeautiful and healthy as can be! Norwegian Salmon served with a homemade dill sauce. 
&lt;br /&gt;\r\nSide of Salmon $15.99/lb ( 3-4 lb.) 

&lt;br /&gt;\r\n&lt;br /&gt;\r\nCedar Grilled Wild Salmon
&lt;br /&gt;\r\nMakes a spectacular presentation! Wild West Coast Salmon glazed and grilled to perfection using a cedar grilling method. 
&lt;br /&gt;\r\nSide of Salmon: (4-5 lb) 

&lt;br /&gt;\r\n&lt;br /&gt;\r\nSmoked Fish Platters

&lt;br /&gt;\r\nSmoked Salmon
&lt;br /&gt;\r\nThis platter comes garnished with sweet onion &amp;amp; tomato slices, capers and lemon wedges. 
&lt;br /&gt;\r\nSmall: Serves 6 &amp;ndash; 8
&lt;br /&gt;\r\nLarge: Serves 12 - 15

&lt;br /&gt;\r\n&lt;br /&gt;\r\nSmoked Fish Combo
&lt;br /&gt;\r\nA gourmet feast of specialties! Our own Smoked Salmon, plus Sturgeon, Whitefish and Trout, lusciously arranged and complemented by sweet onion &amp;amp; tomato slices, capers and lemon wedges. 

&lt;br /&gt;\r\n&lt;br /&gt;\r\nHerring in Wine &amp;amp; Herring in Cream

&lt;br /&gt;\r\n&lt;br /&gt;\r\nIced Seafood Platters

&lt;br /&gt;\r\nImagine the freshest Oysters, Clams, Lobsters, Crab Claws... everything in a shell presented exquisitely on a platter at your next holiday gathering, office party or home event. 

&lt;br /&gt;\r\n&lt;br /&gt;\r\nChoosing from: King Crab Legs, Jumbo Shrimp, Crab Claws, Scallops, Littleneck Clams, Caviar, New Zealand Mussels, Maine Lobster, and Stone Crab Claws (in season). Speak to one of our Freemans team members to determine the appropriate quantity and variety of shellfish for your celebration. 

&lt;br /&gt;\r\n&lt;br /&gt;\r\nWe have catering partners who will cater your party with Freemans fresh seafood! 

&lt;br /&gt;\r\n&lt;br /&gt;\r\nIndoor Clambakes

&lt;br /&gt;\r\nExperience a taste of summer during the chill of winter. We supply a complete clambake in our convenient cooking tin, ready for your grill or stovetop. A Freemans specialty, it includes: 
&lt;br /&gt;\r\n
&lt;br /&gt;\r\nTwo 1/4lb. lobsters, two ears of corn, red potatoes, steamers, two containers of New England or Manhattan chowder and our homemade garlic bread. 
&lt;br /&gt;\r\n&lt;br /&gt;\r\nFish&lt;br /&gt;\r\n&amp;bull; Alaskan White Salmon&lt;br /&gt;\r\n&amp;bull; Arctic Char&lt;br /&gt;\r\n&amp;bull; Baccala&lt;br /&gt;\r\n&amp;bull; Black Bass&lt;br /&gt;\r\n&amp;bull; Blowfish Tails&lt;br /&gt;\r\n&amp;bull; Boned Shad/Shad Roe&lt;br /&gt;\r\n&amp;bull; Carp&lt;br /&gt;\r\n&amp;bull; Catfish&lt;br /&gt;\r\n&amp;bull; Cod&lt;br /&gt;\r\n&amp;bull; Farm Raised Salmon&lt;br /&gt;\r\n&amp;bull; Flounder&lt;br /&gt;\r\n&amp;bull; Grey Sole&lt;br /&gt;\r\n&amp;bull; Lemon Sole&lt;br /&gt;\r\n&amp;bull; Haddock&lt;br /&gt;\r\n&amp;bull; Halibut&lt;br /&gt;\r\n&amp;bull; Mahi Mahi&lt;br /&gt;\r\n&amp;bull; Marlin&lt;br /&gt;\r\n&amp;bull; Monkfish&lt;br /&gt;\r\n&amp;bull; Rainbow Trout&lt;br /&gt;\r\n&amp;bull; Red Snapper&lt;br /&gt;\r\n&amp;bull; Salmon &amp;ndash; Farmed &amp;amp; Wild&lt;br /&gt;\r\n&amp;bull; Salmon Trout&lt;br /&gt;\r\n&amp;bull; Spanish Mackerel&lt;br /&gt;\r\n&amp;bull; Smelts&lt;br /&gt;\r\n&amp;bull; Striped Bass&lt;br /&gt;\r\n&amp;bull; Squid&lt;br /&gt;\r\n&amp;bull; Swordfish&lt;br /&gt;\r\n&amp;bull; Tilapia&lt;br /&gt;\r\n&amp;bull; Tuna&lt;br /&gt;\r\n&amp;bull; Whitefish&lt;br /&gt;\r\n&amp;bull; Whiting&lt;br /&gt;\r\n&amp;bull; Yellow Pike&lt;br /&gt;\r\n&lt;br /&gt;\r\nShellfish&lt;br /&gt;\r\n&amp;bull; Backfin &amp;amp; Jumbo Lump Crab&lt;br /&gt;\r\n&amp;bull; Crabmeat&lt;br /&gt;\r\n&amp;bull; East Coast Oysters&lt;br /&gt;\r\n&amp;bull; Littlenecks, Cherrystones &amp;amp; Minced Clams&lt;br /&gt;\r\n&amp;bull; Live Blue Claws (seasonal)&lt;br /&gt;\r\n&amp;bull; Live Dungeness Crabs&lt;br /&gt;\r\n&amp;bull; Live Maine Lobsters&lt;br /&gt;\r\n&amp;bull; Medium, Large &amp;amp; Jumbo Shrimp&lt;br /&gt;\r\n&amp;bull; New Zealand Mussels&lt;br /&gt;\r\n&amp;bull; Prince Edward Island Mussels&lt;br /&gt;\r\n&amp;bull; Scallops (Sea, Bay, Diver &amp;amp; Nantucket)&lt;br /&gt;\r\n&amp;bull; Soft Shell Crabs (seasonal)&lt;br /&gt;\r\n&amp;bull; Steamers &amp;bull; Wellfleet Oysters&lt;br /&gt;\r\n&lt;br /&gt;\r\nFrozen&lt;br /&gt;\r\n&amp;bull; Alaskan King Crab Legs&lt;br /&gt;\r\n&amp;bull; Alligator Meat&lt;br /&gt;\r\n&amp;bull; Brazilian Lobster Tails&lt;br /&gt;\r\n&amp;bull; Cleaned Squid&lt;br /&gt;\r\n&amp;bull; Crawfish Meat&lt;br /&gt;\r\n&amp;bull; Lobster Meat&lt;br /&gt;\r\n&amp;bull; Louisiana Crawfish Tails&lt;br /&gt;\r\n&amp;bull; Orange Roughy&lt;br /&gt;\r\n&amp;bull; Pulpo&lt;br /&gt;\r\n&amp;bull; Snow Crab Claws&lt;br /&gt;\r\n&lt;br /&gt;\r\n&lt;br /&gt;\r\nSeafood Salads and Buffet Platters

&lt;br /&gt;\r\nSeafood Salads
&lt;br /&gt;\r\nA fine selection of homemade specialty salads. Available a la carte or by the pound. Tastefully presented on catering trays at your request.&lt;br /&gt;\r\n&lt;br /&gt;\r\n&amp;bull; Baccala Salad&lt;br /&gt;\r\n&amp;bull; Calamari Salad&lt;br /&gt;\r\n&amp;bull; Frutta Di Mare&lt;br /&gt;\r\n&amp;bull; Lobster Salad&lt;br /&gt;\r\n&amp;bull; Shrimp Salad&lt;br /&gt;\r\n&amp;bull; Mixed Seafood Salad&lt;br /&gt;\r\n&amp;bull; Fresh Salmon Salad&lt;br /&gt;\r\n&amp;bull; Fresh Tuna Salad&lt;br /&gt;\r\n&amp;bull; Smoked Salmon Salad&lt;br /&gt;\r\n&amp;bull; Smoked Whitefish Salad&lt;br /&gt;\r\n&lt;br /&gt;\r\nLuncheon &amp;ndash; Dinner
&lt;br /&gt;\r\nOur most popular lunch and dinner entr&amp;eacute;es. Available a la carte, individually or by the pound. Tastefully presented on platters at your request.&lt;br /&gt;\r\n&lt;br /&gt;\r\n&amp;bull; Cedar Grilled Salmon&lt;br /&gt;\r\n&amp;bull; Codfish Cakes&lt;br /&gt;\r\n&amp;bull; Crawfish Cakes&lt;br /&gt;\r\n&amp;bull; Fried Tilapia&lt;br /&gt;\r\n&amp;bull; Flounder Fran&amp;ccedil;ais&lt;br /&gt;\r\n&amp;bull; Jumbo Lump Crabcakes&lt;br /&gt;\r\n&amp;bull; Lobster Rolls&lt;br /&gt;\r\n&amp;bull; Poached Salmon&lt;br /&gt;\r\n&amp;bull; Tuna Sandwich&lt;br /&gt;\r\n&amp;bull; Fresh Steamed Shrimp&lt;br /&gt;"

【问题讨论】:

  • 你能贴出调用这个的代码吗?字符串的内容在这里应该无关紧要,当它返回时它应该仍然是一个有效的字符串。

标签: jquery html ruby-on-rails ajax dynamic


【解决方案1】:

如果您只需要文本或 HTML,请更改数据类型:

$.ajax({type: "GET", url: $(this).attr("href"), dataType: "html"}); // for HTML
$.ajax({type: "GET", url: $(this).attr("href"), dataType: "text"}); // for raw text

否则 jQuery 会将响应评估为 JavaScript(来自http://api.jquery.com/jQuery.ajax/)。在这种情况下,您可能希望 dataType: "html" 来自 Rails content_tag。

更新:试试快捷版本,这也会写入#content元素:

$.get($(this).attr('href'), function(response) { $('#content').html(response); });

【讨论】:

  • 好主意!问题是,如果将其更改为 html,它实际上并没有提取数据。
  • 如果您尝试使用标签的快捷版本怎么办?我编辑了答案以反映这一点,并包括对#content 元素的写入。
  • 它重新制定了《盗梦空间》。它在网站内部加载了一个网站并导致视图崩溃。不得不刷新。不错的捷径! ;D
  • 我错过了上面刚刚更新的一些代码。基本上在调用 JS 代码之后,会调用 Show 视图,其中包含加载最终视图的最后一段 JS。
  • 如果是这种情况,请尝试仅提供部分渲染的结果(并将文件名更改为 show.html.haml,因为它现在是您期望的 HTML): = render :partial => ' tab' 并确保该控制器操作的布局渲染已关闭,否则您可能会再次获得 Inception。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2014-06-09
  • 2014-06-14
  • 1970-01-01
相关资源
最近更新 更多