Работают ли ajax-запросы, если JavaScript отключен в браузере?

Я разрабатываю веб-приложение и использую jQuery для обеспечения хорошего пользовательского интерфейса для пользователей. Поэтому я использую ajax-запросы и многие функции jQuery.

если я отключу JavaScript в браузере, большая часть функции не будет работать, потому что я отправляю асинхронные ajax-запросы для многих функций. Но как я могу с этим справиться? Нужно ли переписывать код без использования jQuery и ajax?

найти ниже образца нажмите кнопку событие:

  $("#renameCategory").live('click', function (event) {
         if ($.trim($("#CategoryNewName").val()) == "") {
             alert("Please enter a category name");
             return;
         }
         var selectedCategory = $("#SelectedCategoryId").val();
         var newCategoryName = $("#CategoryNewName").val();
         var postData = { categoryId: selectedCategory, name: newCategoryName };
         $.ajax({
             type: "POST",
             url: '@Url.Action("UpdateCategoryName", "Category")',
             data: postData,
             dataType: "json",
             success: function (data) {
                 $('#' + selectedCategory).text(newCategoryName);
                 $("#selectedCategoryText").html(newCategoryName);
             },
             error: function () { alert('error') }
         });
     });

Как я могу справиться с этим?

5 ответов


Ajax-запросы и jQuery не будут работать, когда клиент отключил JavaScript. Лучший способ сделать эту работу-использовать URL-адрес из <a> tag href нравится так:

<a href="@Url.Action("UpdateCategoryName", "Category")">Click Me!</a>

$("#renameCategory").on('click', function (evt) {
        //To prevent the link from sending the default request
        //call preventDefault() on the jQuery event object
        evt.preventDefault();
        //
        if ($.trim($("#CategoryNewName").val()) == "") {
             alert("Please enter a category name");
             return;
         }
         //GET THE URL FOR THE AJAX REQUEST
         var actionUrl = $(this).attr('href');
         //
         var selectedCategory = $("#SelectedCategoryId").val();
         var newCategoryName = $("#CategoryNewName").val();
         var postData = { categoryId: selectedCategory, name: newCategoryName };
         $.ajax({
             type: "POST",
             url: actionUrl,
             data: postData,
             dataType: "json",
             success: function (data) {
                 $('#' + selectedCategory).text(newCategoryName);
                 $("#selectedCategoryText").html(newCategoryName);
             },
             error: function () { alert('error') }
         });
     });

Вам также нужно будет проверить запросы ajax в вашем контроллере, как показано ниже:

public ActionResult UpdateCategoryName() {
    ...

    if(Request.IsAjaxRequest()) {
        return Json(yourData);
    }

    return View();
}

таким образом, если у вашего пользователя отключен JavaScript, ссылка будет работать как обычный HTTP-запрос. Если у пользователя включен JavaScript, они получат опыт Ajax. Это называется graceful degradation.


вызов Ajax работает, когда включен javascript.

вы можете обрабатывать его с помощью серверных сценариев, когда javascript отключен, вы должны выполнять работы по post / get-запросам, поэтому вам нужно перекодировать свое веб-приложение.


Если JavaScript отключен в браузере, то <script> теги не будут интерпретироваться и выполняться в вашем документе, включая весь ваш jQuery и AJAX JS-код. Наиболее распространенным способом реализации интерактивного веб-приложения, отличного от Javascript, является Flash, поэтому у вас все еще может быть план резервного копирования. Вы также можете перейти на сторону сервера старой школы только сгенерированные динамические страницы.

сегодня, однако это очень редко для кого-то не включен JavaScript, поэтому это не должно быть проблемой все.

в любом случае вы можете использовать <noscript> HTML-тег для отображения сообщения этих пользователей.

<script type="text/javascript">
    ... Js code ...
</script>
<noscript>You have JavaScript disabled in your browser. Please enable it.</noscript>

очевидно, что любая функциональность в зависимости от сценария не будет работать, если сценарий отключен, недоступен или несовместим со средой, в которой он пытается работать.

многие считают, что это хорошая стратегия для разработки веб-приложений, чтобы они работали без поддержки скриптов. Затем вы можете добавить сценарии для улучшения рабочего процесса и эффективности, но вы будете делать это, зная, что у вас есть доступ к рабочей системе, если в любой момент сценарий не должен бежать.

дисциплина проектирования и реализации хорошего рабочего процесса, основанного только на HTML и формах, может привести к более простому интерфейсу для скрипта и более эффективному рабочему процессу.

слишком часто разработчики объединяют некоторые минимальные HTML и CSS, а затем пытаются сделать все в скрипте. Крайность состоит в том, чтобы иметь DOCTYPE, элемент заголовка, один элемент блока и один элемент сценария, который делает все. Не рекомендуемый.


Если для работы вашего сайта без javascript требуется много изменений, просто заставьте пользователей включить javascript. Один из способов уведомления пользователей о включении javascript-использовать тег noscript. http://www.w3schools.com/tags/tag_noscript.asp

просмотр источника страницы stackoverflow, чтобы увидеть, как они используют noscript