jQuery Undetermined String Literal Error

Sam Deering

Have you ever come upon this annoying error message: “undetermined string literal”.

undetermined-string-literal

Ok, i’ve got 3 occasions were you might run into this error and how to fix it for each specific case.

  1. Multiple Line Strings
  2. Wrong String Format (Bad Characters)
  3. Angle Brackets

Multiple Line Strings

If your trying to assign a string that covers multiple lines to a variable you might see the “Undetermined String Literal” error. To solve this you must use the JavaScript escape character backslash (“”) after each line to tell the interpreter where the line ends and to join the string together.

Another way is to simply split your string up into bits and add them together.

Wrong String Format (Bad Characters)

If your trying to assign HTML to a variable you might see the “Undetermined String Literal” error. It might be that you loaded the HTML from somewhere else via ajax and are now trying to use/inspect it. Use the following code to clean up the bad characters in the string before trying to assign it.

Angle Brackets

If your trying to use angle brackets (“>” & “< ") within a string you might see the "Undetermined String Literal" error when trying to submit the string data via ajax.

var contentQuery = ‘<securequery consumer="abc" engine="abc" template="abc">first 10 location like "abc"';
//note: abc replaces the actual query

It turns out it was the securequery angle brackets creating the error and I had to hack it (as such) by adding in the angle brackets (“< " & ">“) just before encoding and sending the request via AJAX (see below).

$.ajax({
  type: 'POST',
  url: '/ajax/abc',
  data: 'content=' + encodeURIComponent('< '+contentQuery+'>'),
  dataType: 'html',
  success: function(data){
	console.log(data);
	//display results
	$('#results').html(data);
  }
});

This might even be a bug in jQuery, not sure though. When you test in firebug it works though! So maybe not…

var fine = '<securequery consumer="abc" engine="abc" template="abc">first 10 location like "abc"</securequery>';
console.log(fine);

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.