2011-09-25 31 views
6

Tôi đang phát triển một ứng dụng web và đang sử dụng jQuery để cung cấp giao diện người dùng tốt cho người dùng. Vì vậy, tôi đang sử dụng các yêu cầu ajax và nhiều hàm jQuery.Yêu cầu ajax có hoạt động nếu JavaScript bị tắt trong trình duyệt không?

Nếu tôi tắt JavaScript trong trình duyệt, phần lớn chức năng sẽ không hoạt động vì tôi gửi yêu cầu ajax không đồng bộ cho nhiều chức năng. Nhưng làm thế nào tôi có thể xử lý này? Tôi có cần phải viết lại mã mà không cần sử dụng jQuery và ajax không?

Tìm một dưới một mẫu nút bấm kiệ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') } 
     }); 
    }); 

Làm thế nào tôi có thể xử lý này?

Trả lời

12

Yêu cầu Ajax và jQuery sẽ không hoạt động khi khách hàng đã tắt JavaScript. Cách tốt nhất để làm cho công việc này là sử dụng các URL từ <a> thẻ href như vậy:

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

Bạn cũng sẽ cần phải kiểm tra cho các yêu cầu ajax trong điều khiển của bạn như dưới đây:

public ActionResult UpdateCategoryName() { 
    ... 

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

    return View(); 
} 

này nếu người dùng của bạn đã tắt JavaScript, liên kết sẽ hoạt động như một yêu cầu HTTP bình thường. Nếu người dùng đã bật JavaScript, thì họ sẽ có được trải nghiệm Ajax. Điều này được gọi là graceful degradation.

2

Cuộc gọi Ajax hoạt động khi javascript được bật.

Bạn có thể xử lý nó bằng kịch bản phía máy chủ, khi javascript bị vô hiệu hóa, bạn phải thực hiện công việc bằng cách đăng/nhận yêu cầu, vì vậy bạn phải mã hóa ứng dụng web của mình.

2

Nếu JavaScript bị tắt trong trình duyệt, các thẻ <script> sẽ không được diễn giải và thực hiện trong tài liệu của bạn, bao gồm tất cả mã jQuery và AJAX JS của bạn. Cách phổ biến nhất để triển khai ứng dụng web tương tác ngoài Javascript là Flash, vì vậy bạn vẫn có thể có kế hoạch sao lưu. Bạn cũng có thể đi với phía máy chủ trường cũ chỉ tạo ra các trang động.

Hôm nay, tuy nhiên rất hiếm khi ai đó không bật JavaScript, do đó, nó không phải là vấn đề gì cả.

Dù sao, bạn có thể sử dụng thẻ html <noscript> để hiển thị thông báo cho những người dùng này.

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

Rõ ràng bất kỳ chức năng tùy thuộc vào kịch bản sẽ không hoạt động nếu kịch bản bị vô hiệu hóa, không có sẵn hoặc không phù hợp với môi trường nó đang cố gắng chạy trong.

Nó được nhiều người xem là một chiến lược tốt để phát triển các ứng dụng web để chúng hoạt động mà không cần hỗ trợ tập lệnh. Sau đó bạn có thể thêm kịch bản để cải thiện quy trình làm việc và hiệu quả, nhưng bạn sẽ làm như vậy khi biết rằng bạn có một sự sụp đổ về một hệ thống làm việc có sẵn nếu tại bất kỳ thời điểm nào tập lệnh không nên chạy.

Kỷ luật thiết kế và triển khai quy trình làm việc tốt chỉ dựa trên HTML và biểu mẫu có thể dẫn đến giao diện dễ dàng hơn cho tập lệnh và quy trình làm việc hiệu quả hơn.

Tất cả các nhà phát triển thường xuyên ném cùng một số HTML và CSS tối thiểu, sau đó thử và làm mọi thứ trong tập lệnh. Cực đoan là phải có một DOCTYPE, phần tử title, một phần tử khối và một phần tử script làm mọi thứ. Không được khuyến khích.

2

Nếu cần nhiều sửa đổi để trang web của bạn hoạt động mà không có javascript, thì chỉ cần buộc người dùng bật javascript. Một cách để thông báo cho người dùng để bật javascript là sử dụng thẻ noscript. http://www.w3schools.com/tags/tag_noscript.asp

Xem nguồn trang của lưu lượng truy cập của ngăn xếp để xem cách họ sử dụng noscript

Các vấn đề liên quan