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, перейти на страницу входа и получить следующее:

Ошибка Microsoft JScript

Нашли этот ответ Stackru: /questions/7515023/nenavyazchivyij-ajax-perestal-rabotat-posle-obnovleniya-jquery-do-190/7515037#7515037 и внесли 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 для повторного запуска в режиме отладки.

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

2 ответа

Решение

Пакет https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/ был исправлен в версии 2.0.30116.0 для решения этой проблемы. Призывы к .live() были изменены для использования .on(),

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

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

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.

Другие вопросы по тегам