Работают ли 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