неопределенный строковый литерал при загрузке текста через ajax - PullRequest
0 голосов
/ 20 августа 2010

Это, похоже, распространенная проблема среди программистов разных языков.

Я использую jQuery для вывода текста AJAX на экран, но Firebug сообщает

unterminated string literal с бесполезным примером:

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

Я дважды проверил в тексте моего примера AJAX, есть ли какие-нибудь ', которые могли бы как-то его взорвать, но я удалил их все, и он все равно не будет анализироваться.

Кто-нибудь сталкивался с этой ошибкой раньше и выяснил, как с ней справиться?

UPDATE

Помощник, который вызывает это:

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;
});

Это запускает шоу.js.haml

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

И затем загружается фрагмент, который является окончательным текстом

Пример текста бомбардировки:

Cold Seafood Platters

<br />\r\nClassic Shrimp Cocktail 
<br />\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 &ndash; 6
<br />\r\nLarge: Serves 16 &ndash; 20

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

<br />\r\n<br />\r\nMixed Seafood Royale
<br />\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. 
<br />\r\nMedium: Serves 6 - 8
<br />\r\nLarge: Serves 12 - 15

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

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

<br />\r\n<br />\r\nSmoked Fish Platters

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

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

<br />\r\n<br />\r\nHerring in Wine &amp; Herring in Cream

<br />\r\n<br />\r\nIced Seafood Platters

<br />\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. 

<br />\r\n<br />\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. 

<br />\r\n<br />\r\nWe have catering partners who will cater your party with Freemans fresh seafood! 

<br />\r\n<br />\r\nIndoor Clambakes

<br />\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: 
<br />\r\n
<br />\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. 
<br />\r\n<br />\r\nFish<br />\r\n&bull; Alaskan White Salmon<br />\r\n&bull; Arctic Char<br />\r\n&bull; Baccala<br />\r\n&bull; Black Bass<br />\r\n&bull; Blowfish Tails<br />\r\n&bull; Boned Shad/Shad Roe<br />\r\n&bull; Carp<br />\r\n&bull; Catfish<br />\r\n&bull; Cod<br />\r\n&bull; Farm Raised Salmon<br />\r\n&bull; Flounder<br />\r\n&bull; Grey Sole<br />\r\n&bull; Lemon Sole<br />\r\n&bull; Haddock<br />\r\n&bull; Halibut<br />\r\n&bull; Mahi Mahi<br />\r\n&bull; Marlin<br />\r\n&bull; Monkfish<br />\r\n&bull; Rainbow Trout<br />\r\n&bull; Red Snapper<br />\r\n&bull; Salmon &ndash; Farmed &amp; Wild<br />\r\n&bull; Salmon Trout<br />\r\n&bull; Spanish Mackerel<br />\r\n&bull; Smelts<br />\r\n&bull; Striped Bass<br />\r\n&bull; Squid<br />\r\n&bull; Swordfish<br />\r\n&bull; Tilapia<br />\r\n&bull; Tuna<br />\r\n&bull; Whitefish<br />\r\n&bull; Whiting<br />\r\n&bull; Yellow Pike<br />\r\n<br />\r\nShellfish<br />\r\n&bull; Backfin &amp; Jumbo Lump Crab<br />\r\n&bull; Crabmeat<br />\r\n&bull; East Coast Oysters<br />\r\n&bull; Littlenecks, Cherrystones &amp; Minced Clams<br />\r\n&bull; Live Blue Claws (seasonal)<br />\r\n&bull; Live Dungeness Crabs<br />\r\n&bull; Live Maine Lobsters<br />\r\n&bull; Medium, Large &amp; Jumbo Shrimp<br />\r\n&bull; New Zealand Mussels<br />\r\n&bull; Prince Edward Island Mussels<br />\r\n&bull; Scallops (Sea, Bay, Diver &amp; Nantucket)<br />\r\n&bull; Soft Shell Crabs (seasonal)<br />\r\n&bull; Steamers &bull; Wellfleet Oysters<br />\r\n<br />\r\nFrozen<br />\r\n&bull; Alaskan King Crab Legs<br />\r\n&bull; Alligator Meat<br />\r\n&bull; Brazilian Lobster Tails<br />\r\n&bull; Cleaned Squid<br />\r\n&bull; Crawfish Meat<br />\r\n&bull; Lobster Meat<br />\r\n&bull; Louisiana Crawfish Tails<br />\r\n&bull; Orange Roughy<br />\r\n&bull; Pulpo<br />\r\n&bull; Snow Crab Claws<br />\r\n<br />\r\n<br />\r\nSeafood Salads and Buffet Platters

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

1 Ответ

1 голос
/ 20 августа 2010

Если вам просто нужен текст или HTML, измените dataType:

$.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); });
...