ASP.NET MVC 4: невозможно изменить jQuery Ненавязчивый Ajax - программирование
Подтвердить что ты не робот

ASP.NET MVC 4: невозможно изменить jQuery Ненавязчивый Ajax

Использование ASP.NET MVC 4 и NuGet для управления пакетами.

После обновления до jQuery 1.9.1 через NuGet я начал получать ошибки JavaScript относительно удаления функции live() в jQuery 1.9.x.

Я ударил F5 для запуска в режиме отладки из VS.NET, перейдите на страницу входа и получите следующее:

Error Microsoft JScript

Нашел этот ответ StackOverflow: qaru.site/info/143606/... и внес 4 изменения в ~\Scripts\jquery.unobtrusive-ajax.js.

Мой ~\Scripts\jquery.unobtrusive-ajax.js:

    $(document).on("click", "a[data-ajax=true]", function (evt) {
       ...
    });
    $(document).on("click", "form[data-ajax=true] input[type=image]", function (evt) {
       ...
    });
    $(document).on("click", "form[data-ajax=true] :submit", function (evt) {
       ...
    });
    $(document).on("submit", "form[data-ajax=true]", function (evt) {
       ...
    });

Я также физически удалил jquery.unobtrusive-ajax.min.js и использовал WebGrease 1.3.0, чтобы восстановить его из моего обновленного ~\Scripts\jquery.unobtrusive-ajax.js.

Однако по какой-то причине мои изменения, чтобы не использовать функцию .live(), не были зафиксированы. Я попытался остановить веб-сайт IIS Express 8.0 (localhost: 63798), под которым VS.NET запускает приложение MVC.

Также попробовал сделать Build- > Clean Solution, Build- > Rebuild Solution перед тем, как нажать F5, чтобы снова работать в режиме отладки.

Если кто-то испытал это раньше и имеет какое-либо представление, я был бы очень благодарен. Заранее спасибо.

4b9b3361

Ответ 1

Пакет Microsoft jQuery Unobtrusive Ajax исправлен в версии 2.0.30116.0, чтобы устранить эту проблему. Вызов .live() был изменен для использования .on().

Попробуйте обновить пакет NuGet, чтобы получить последнюю версию.

Однако предложение использовать пакет jQuery Migrate является хорошим для поиска проблем в других плагинах или вашего собственного кода, которые несовместимы с изменениями в jQuery 1.9 +.

Ответ 2

live() был удален в jQuery 1.9 вместе с несколькими другими функциями.

Если вам нужна поддержка удаленных функций, вам также нужно добавить файл миграции jQuery, содержащий удаленные функции.

Добавление ссылки, аналогичной приведенной ниже, должно включать все необходимые функции:

<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>

Файл переноса в режиме отладки также добавит предупреждения на консоль, уведомляя вас, когда вы используете любые удаленные функции. Это поможет вам в медленной замене их по мере продвижения, в результате вы сможете удалить ссылку на файл миграции, используя только jQuery 1.9 и более поздние версии.

См. следующие сообщения в блоге jQuery для всех подробностей о переносе на jQuery 1.9.