http://www.perlmonks.org?node_id=565721

geektron has asked for the wisdom of the Perl Monks concerning the following question:

I'm working with a small AJAX-ish application chunk, and for the life of me I can't get the request.responseText to end up working properly. I'm sure the root of the problem is the text that I'm sending back (via a mod_perl handler), so I'm asking here.

The AJAX portion takes a name out of a text field, sends it to a mod_perl handler, and sends back the 'original' javascript to rebuild the same link (the new name) with an onClick handler associated with it. the code, before being clicked and turned into the AJAX widget, looks like this:

<span id='override_123'> <a href='#' onClick='javascript:makeForm( "123", "linktype" "titleVal +ue");'>titleValue</a> </span>
When the link is clicked, the span's innerHTML is changed to a text box and a button with the associated onClick handler added to the button. The AJAX portion works; the database is updated with the new value, and I try to recreate the above code using the values passed to the handler.

I can't seen to get the quoting right, and I've been fighting with it for hours now. What I'm currently sending back to the AJAX request is:

$response = "\$('override_$componentId').innerHTML=\"<a href='#' onCl +ick='javascript:makeForm( \"$componentId\", \"$componentType\", \"$ne +wTitle\");'>$newTitle</a>';";
Which, when evaluated on the client side
eval( request.responseText );
throws a syntax error: Syntax Error: missing semicolon before statement.

(I'm using the Prototype libraries to handle the AJAX abstraction.)