Używamy prototypu do obsługi wszystkich naszych żądań Ajax i do prostego renderowania treści HTML, która jest następnie przypisywana do odpowiedniego div przy użyciu następującej funkcji:Jak zmusić JavaScript do wykonania w ramach odpowiedzi HTML na żądanie Ajaxa
function ajaxModify(controller, parameters, div_id)
{
var div = $(div_id);
var request = new Ajax.Request
(
controller,
{
method: "post",
parameters: parameters,
onSuccess: function(data) {
div.innerHTML = data.responseText;
},
onFailure: function() {
div.innerHTML = "Information Temporarily Unavailable";
}
}
);
}
Jednak czasami muszę wykonać JavaScript w odpowiedzi HTML i ta metoda wydaje się niezdolna do tego.
Próbuję zachować listę funkcji dla wywołań Ajax do minimum z kilku powodów, więc jeśli istnieje sposób na modyfikację istniejącej funkcji bez łamania wszędzie tego, że jest on aktualnie używany lub sposób modyfikacji odpowiedź HTML, która spowoduje, że dowolny wbudowany javascript będzie świetny.
Na marginesie, już próbowałem dodać "evalJS:" force "" do funkcji, aby zobaczyć, co by to zrobiło i nic nie pomogło.
TO BYŁO TOTALLY WICKED! Nie mogę uwierzyć, że nigdy wcześniej tego nie widziałem. Dziękuję Ci. –
Ja też. Zrobiłem ten sam błąd i spędziłem godzinę waląc głową o monitor. To dlatego, że właśnie wypluwałem JS i nie dbałem o aktualizowanie jakiegokolwiek kodu HTML. Skończyłem na aktualizacji dummy/hidden DIV, więc nie musiałem bawić się z nagłówkami serwerów. –