[Problem] Javascript returned by link_to_remote cannot be au


#1

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:

Search

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.


#2

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

Jason


#3

try {

Element.replace("textSearchLink", "<a href=\"#\" onclick=\"new

Ajax.Request(’/searches/54’, {asynchronous:true, evalScripts:true,
parameters:Form.serialize(‘textSearchFieldset’)});
return false;">Add");
Element.replace(“materialPropertySearchLink”, “<a href=”#"
onclick=“new Ajax.Request(’/searches/54’, {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(‘materialPropertySearchFieldset’)});
return false;”>Add");
Element.replace(“metalCompositionSearchLink”, “<a href=”#"
onclick=“new Ajax.Request(’/searches/54’, {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(‘metalCompositionSearchFieldset’)});
return false;”>Add");
new Insertion.Bottom(“searchCriteriaDiv”, “

\n <a href=”#"
onclick=“new Ajax.Request(’’, {asynchronous:true, evalScripts:true});
return false;”>Remove\n
keyword2\n

");

} 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");
\nElement.replace(“materialPropertySearchLink”, “<a href=\”#\"
onclick=\“new Ajax.Request(’/searches/54’, {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(‘materialPropertySearchFieldset’)});
return false;\”>Add");
\nElement.replace(“metalCompositionSearchLink”, “<a href=\”#\"
onclick=\“new Ajax.Request(’/searches/54’, {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(‘metalCompositionSearchFieldset’)});
return false;\”>Add");\nnew Insertion.Bottom(“searchCriteriaDiv
“, “

\n <a href=\”#\” onclick=\“new Ajax.Request(’’,
{asynchronous:true, evalScripts:true}); return false;\”>Remove
\n keyword2\n

”);’); 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(…)’.