views:

33

answers:

1

This seems to be a common problem among coders from different languages.

I'm using jQuery to pull AJAX text into a screen, but firebug reports an

unterminated string literal with a worthless example :

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

I double checked in my AJAX example text if there were any ''s, that would have somehow bombed it but i deleted them all, and it still would not parse.

Anyone come across this error before and figure out how to handle it?

UPDATE:

The helper that calls this:

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

The JS:

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

That triggers the show.js.haml

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

And then that loads the partial which is the final text

Example bombing text :

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  A: 

If you just need text or HTML, change the dataType:

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

Otherwise jQuery will evaluate the response as JavaScript (from http://api.jquery.com/jQuery.ajax/). In this case, you probably want dataType: "html" when coming from a Rails content_tag.

UPDATED: Try the shortcut version, this also writes to the #content element:

$.get($(this).attr('href'), function(response) { $('#content').html(response); });
John Bintz
brilliant idea! Trouble is, it doesn't actually pull the data if its changed to html.
Trip
What if you try the shortcut version of the tag? I edited the answer to reflect this, and included the write to the #content element.
John Bintz
It re-enacted Inception. It loaded a website inside of a website and crashed the view. Had to refresh. Nice shortcut though! ;D
Trip
I was missing some code above that I just updated. Basically after that JS code is called, the Show view is called which has that last piece of JS in it that loads the final view.
Trip
If that's the case, try just delivering the result of the partial render (and change the filename to show.html.haml since it's now HTML you're expecting):= render :partial => 'tab'And make sure layout rendering is off for that controller action, otherwise you might get Inception all over again. :)
John Bintz
Again excellent idea! Will tell you how goes
Trip
Yup everyhing works like a charm! Thanks so much!
Trip