2011-09-25 12 views
6

Estoy desarrollando una aplicación web y estoy usando jQuery para proporcionar una buena interfaz de usuario para los usuarios. Por lo tanto, estoy usando solicitudes ajax y muchas funciones jQuery.¿Las solicitudes ajax funcionan si JavaScript está deshabilitado en el navegador?

Si deshabilito JavaScript en el navegador, la mayor parte de la función no funcionará porque estoy enviando solicitudes ajax asíncronas para muchas funciones. Pero, ¿cómo puedo manejar esto? ¿Necesito reescribir el código sin usar jQuery y ajax?

Encuentra una a continuación una muestra de evento de clic de botón:

$("#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') } 
     }); 
    }); 

¿Cómo puedo manejar esto?

Respuesta

12

Las solicitudes de Ajax y jQuery no funcionarán cuando el cliente tenga JavaScript desactivado. La mejor manera de hacer este trabajo es utilizar la URL del href <a> etiqueta de este modo:

<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') } 
     }); 
    }); 

También tendrá que comprobar si hay peticiones Ajax en tu controlador, como a continuación:

public ActionResult UpdateCategoryName() { 
    ... 

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

    return View(); 
} 

Este De esta manera, si su usuario tiene JavaScript desactivado, el enlace funcionará como una solicitud HTTP normal. Si el usuario tiene JavaScript habilitado, entonces obtendrán la experiencia de Ajax. Esto se llama graceful degradation.

2

La llamada Ajax funciona cuando Javascript está habilitado.

Puede manejarlo mediante scripts de servidor, cuando javascript está deshabilitado, debe hacer trabajos por solicitudes de publicación/obtención, por lo que debe recodificar su aplicación web.

2

Si JavaScript está deshabilitado en el navegador, las etiquetas <script> no se interpretarán ni se ejecutarán en su documento, incluidos todos los códigos JQuery y AJAX JS. La forma más común de implementar aplicaciones web interactivas distintas de Javascript es Flash, por lo que aún puede tener un plan de respaldo. También puede ir con el lado de la vieja escuela solo páginas dinámicas generadas.

Hoy en día, sin embargo, es muy raro que alguien no tenga JavaScript habilitado, por lo que no debería ser un problema en absoluto.

De todos modos, puede utilizar la etiqueta <noscript> html para mostrar un mensaje a estos usuarios.

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

Obviamente ninguna funcionalidad en función de script no funcionará si scripting está deshabilitado, no está disponible o es incompatible con el medio ambiente que está intentando ejecutar en.

Es considerado por muchos como una buena estrategia para desarrollar aplicaciones web para que funcionen sin soporte de scripts. A continuación, puede agregar secuencias de comandos para mejorar el flujo de trabajo y la eficiencia, pero lo hará sabiendo que tiene una copia de seguridad de un sistema operativo disponible si en algún momento el script no se debe ejecutar.

La disciplina de diseñar e implementar un buen flujo de trabajo basado únicamente en HTML y formularios bien puede conducir a una interfaz más sencilla para el script y un flujo de trabajo más eficiente.

Demasiado a menudo los desarrolladores lanzan HTML y CSS mínimos, luego intentan hacer todo en el script. El extremo es tener un DOCTYPE, elemento de título, un elemento de bloque y un elemento de script que hace de todo. No recomendado.

2

Si se necesita mucha modificación para que su sitio web funcione sin javascript, simplemente obligue a los usuarios a habilitar javascript. Una forma de notificar a los usuarios para habilitar javascript es usar la etiqueta noscript. http://www.w3schools.com/tags/tag_noscript.asp

Ver la fuente de la página de stackoverflow para ver cómo usan noscript

Cuestiones relacionadas