[Problem] Javascript returned by link_to_remote cannot be automatically evaluated.

I created a ajax link using link_to_remote helper. I used the
options[:submit] so that I can submit a form using ajax POST method.
This ajax call would render a rjs in which I did some DOM operations
on the current page. The content of the response is just what I
want(some javascript), but it just cannot be evaluated
automatically.The link my link_to_remote generates is:

<a href="#" id="textSearchLink" onclick="new Ajax.Request('/searches',
{asynchronous:true, evalScripts:true}); return false;">Search</a>

I think the "evalScripts:true" should tell the page to automatically
evaluated the returned javascript but the fact is not like that. I've
used other link_to_remote before, all of which use ajax GET method.
I'm thinking whether the returned javascript will not be automatically
evaluated if the ajax method is POST.

How can I solve this problem? Thanks a lot.

There’s nothing wrong with that link. What is the javascript/RJS you’re sending to the page?

Jason

try {

    Element.replace("textSearchLink", "<a href=\"#\" onclick=\"new
Ajax.Request('/searches/54', {asynchronous:true, evalScripts:true,
parameters:Form.serialize('textSearchFieldset')});
        return false;\">Add</a>");
    Element.replace("materialPropertySearchLink", "<a href=\"#\"
onclick=\"new Ajax.Request('/searches/54', {asynchronous:true,
evalScripts:true,
        parameters:Form.serialize('materialPropertySearchFieldset')});
return false;\">Add</a>");
    Element.replace("metalCompositionSearchLink", "<a href=\"#\"
onclick=\"new Ajax.Request('/searches/54', {asynchronous:true,
evalScripts:true,
        parameters:Form.serialize('metalCompositionSearchFieldset')});
return false;\">Add</a>");
    new Insertion.Bottom("searchCriteriaDiv", "<p>\n <a href=\"#\"
onclick=\"new Ajax.Request('', {asynchronous:true, evalScripts:true});
return false;\">Remove</a>\n
        <label>keyword2</label>\n</p>");

} catch (e) { alert('RJS error:\n\n' + e.toString());
alert('Element.replace(\"textSearchLink\", \"<a href=\\\"#\\\" onclick=
\\\"new Ajax.Request(\'/searches/54\', {asynchronous:true,
evalScripts:true, parameters:Form.serialize(\'textSearchFieldset\')});
return false;\\\">Add</a>\");
\nElement.replace(\"materialPropertySearchLink\", \"<a href=\\\"#\\\"
onclick=\\\"new Ajax.Request(\'/searches/54\', {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(\'materialPropertySearchFieldset\')});
return false;\\\">Add</a>\");
\nElement.replace(\"metalCompositionSearchLink\", \"<a href=\\\"#\\\"
onclick=\\\"new Ajax.Request(\'/searches/54\', {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(\'metalCompositionSearchFieldset\')});
return false;\\\">Add</a>\");\nnew Insertion.Bottom(\"searchCriteriaDiv
\", \"<p>\\n <a href=\\\"#\\\" onclick=\\\"new Ajax.Request(\'\',
{asynchronous:true, evalScripts:true}); return false;\\\">Remove</a>\
\n <label>keyword2</label>\\n</p>\");'); throw e }

For now, I'm using the option[:complete] to evaluate the above script,
so the link should be like:

<%= link_to_remote 'Search', { :url => searches_path, :submit =>
'textSearchFieldset', :complete => 'eval(request.responseText)' },
{ :id => 'textSearchLink' } %>

This does work, but the script should be evaluated automatically other
than using :complete => 'eval(...)'.