Метод обратного вызова в View не оценивает

0

В моем приложении у меня есть представление, которое включает эту строку как часть таблицы:

<td>{{=A('Callback test', callback=URL('jquery_test'), target=':eval')}}</td>

jquery_test - это метод, который делает это:

def jquery_test():
    return "jQuery('#option_list').html('Example jQuery string');"

Это работало в более ранней версии web2py: строка "Пример строки jQuery" была правильно введена в division view_list.

Сегодня утром, осознав, что я отставал от web2py, я повысил уровень до 2.9.5. Теперь приведенный выше код перенаправляет возвращаемую строку: я получаю пустое представление с помощью "jQuery (" # option_list "). Html (" Пример строки jQuery "); в теме. URL-адрес страницы

"http://127.0.0.1:8000/myApp/default/jquery_test"

Я не могу сказать, какое обновление изменило это поведение, поскольку я перешел от 2.2-something до 2.9.5. Какие идеи изменились и как их исправить?

Благодарю.

Отредактировано с дополнительной информацией... Я обновил файлы web2py.js (и другие.js и.css файлы), как это было предложено Энтони ниже.

Используя этот обратный вызов в файле вида:

<td>{{=A('Callback test', callback=URL('jquery_test'), target='options_list')}}</td>

правильно вызывает метод jquery_test и заполняет DIV id = 'options_list'

Использование этого обратного вызова:

<td>{{=A('Callback test', callback=URL('jquery_test'), target=':eval')}}</td>

не вызывает метод jquery_test. Он никогда не выполняется вообще.

Я надеюсь, что это дает дополнительные подсказки.

Теги:
web2py

1 ответ

1
Лучший ответ

При обновлении фреймворка вам также необходимо обновить файл web2py.js в папке приложения /static, поскольку это часть кода фреймворка и требуется, чтобы функциональность JavaScript/Ajax работала правильно.

ОБНОВЛЕНИЕ: глядя на старый и новый код, похоже, что реализация изменилась. Это правда, что target=':eval' используется для работы (из-за реализации за кадром с использованием функции ajax()), но это не было документированной функцией.

В качестве альтернативы вместо того, чтобы быть обработанным JavaScript-кодом Ajax, вы должны быть в состоянии добавить код JavaScript в response.js, и он будет выполнен на клиенте.

  • 0
    Спасибо, Энтони. Я только что обновил файл web2py.js в папке приложения / static и все еще получаю описанное поведение: новое перенаправленное представление, а не оценка jQuery. Есть ли что-то еще, что мне нужно обновить?
  • 0
    Еще раз спасибо, Энтони. Я буду атаковать это с помощью подхода response.js. Я ценю вашу помощь.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню