2014-10-30 42 views
5

Trong ứng dụng web mvc 4 của tôi, tôi nhận được lỗi sau "Uncaught TypeError: undefined không phải là một hàm jquery.unobtrusive-ajax.js: 115"Uncaught TypeError: undefined không phải là một hàm jquery.unobtrusive-ajax.js

trên dòng này, chúng tôi có

$("a[data-ajax=true]").live("click", function (evt) { 
    evt.preventDefault(); 
    asyncRequest(this, { 
     url: this.href, 
     type: "GET", 
     data: [] 
    }); 
}); 

tôi đã tìm thấy rất nhiều người nhận được lỗi tương tự và đọc bài đăng. Hầu như tất cả chúng đều đề nghị sắp xếp lại các câu lệnh jquery và các kịch bản khác, mà tôi đã cố gắng trong thời gian dài nhưng không có gì dường như loại bỏ lỗi này.

Hiện tại tôi có css và tập lệnh theo thứ tự sau trong phần đầu. Bất kỳ ai có thể tìm thấy bất kỳ vấn đề? cảm ơn

<link href="/Content/main/css/bootstrap.css" rel="stylesheet"/> 
<link href="/Content/UiDatePicker.css" rel="stylesheet"/> 
<link href="/Content/Site.css" rel="stylesheet"/> 

<script src="/Scripts/modernizr-2.5.3.js"></script> 
<script src="/Scripts/jquery-1.9.1.js"></script> 
<script src="/Scripts/jquery-ui.js"></script> 
<script src="/Scripts/bootstrap.js"></script> 
<script src="/Scripts/respond.js"></script> 
<script src="/Content/main/js/General.js"></script> 


<script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="/Scripts/jquery.validate.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.js"></script> 
+0

Bạn đã kiểm tra xem dòng nào ở dòng 115 trong _jquery.unobtrusive-ajax.js_ chưa? Và một điều nữa: '.live()' không được chấp nhận trong jQuery 1.7 và đã bị loại bỏ trong jQuery 1.9. Sử dụng '.on()' để thay thế. – Regent

+0

@Regent đây là cuộc gọi trên dòng 115 $ ("a [data-ajax = true]") .chạy ("click", function (evt) .Tôi sẽ cố gắng lấy jquery.unobtrusive-ajax.js mới nhất từ bất kỳ CDN – rumi

+1

Vâng, thú vị ... Chỉ cần thay thế '.live()' bằng '.on()' (nếu nó là cho các phần tử động, sử dụng '$ (tài liệu) .on ('click'," a [data- ajax = true] ", function (evt) {' hoặc tốt hơn tải xuống phiên bản mới hơn của _unobtrusive-ajax.js_ – Regent

Trả lời

3

.live() không được dùng trong jQuery 1.7 và đã bị loại bỏ trong jQuery 1.9. Bạn có thể sử dụng thay vì .on():

$("a[data-ajax=true]").on("click", function (evt) { 

Hoặc, nếu yếu tố được thêm tự động:

$(document).on('click', "a[data-ajax=true]", function (evt) { 

Lưu ý: mặc dù nó có thể sửa chữa tất cả những vấn đề này trong không phô trương-ajax.js, nó sẽ tốt hơn để tải xuống phiên bản mới hơn với tất cả những vấn đề này đã được khắc phục (nếu tất nhiên phiên bản này tồn tại).

+0

Tôi đã có phiên bản cũ là tốt.Tôi đã phải loại bỏ các gói ajax cũ thông qua NuGet và cài đặt mới.Ngoài ra F5 trình duyệt của bạn như nó Thậm chí sau khi tôi đã thay thế các tập tin, nó vẫn được lưu trữ trong trình duyệt. –

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