2011-02-07 52 views
20

Tôi có một yêu cầu trả về trang jsp. Nhưng thực tế là, jsp bao gồm jsp: include trong nó (nó gọi một tệp jsp khác) và tức là đưa ra lỗi 80020101.Vấn đề yêu cầu Ajax: lỗi 80020101

Bất kỳ ý tưởng nào?

Cảm ơn

Trả lời

8

Xóa khai báo javascript nhập tập lệnh bằng thuộc tính src. Thay đổi tệp javascript của bạn thành nội tuyến javascript nếu bạn thực sự cần nó ở đó.

Nguồn:http://bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array

Cách dễ nhất để sẽ để thêm một tham số để yêu cầu AJAX của bạn như ajax = 1 và ẩn các tờ khai javascript khi ajax -parameter tồn tại là trong yêu cầu.

Tôi không nghĩ rằng việc này có liên quan đến việc bao gồm tệp với jsp: kể từ khi trình duyệt không biết aynthing khác với HTML bạn ném nó.

+0

Điều này là hợp lý nhưng, tệp js mà chúng tôi sử dụng là tệp lớn mà chúng tôi không thể sao chép một phần của nó. Và tệp jsp được tái sử dụng nhiều lần trước tệp này nhưng không giống như cách này. – Ali

+0

Bạn có cân nhắc việc ẩn khai báo khi thực hiện AJAX không? – heikkim

+0

Chuyển đổi từ thẻ tập lệnh với thuộc tính src sang javascript nội tuyến là * không * hợp lý. – DCShannon

0

Bạn có cơ hội bao gồm tệp js không?

Lỗi 80020101 có nghĩa là IE không thể biên dịch tập lệnh của bạn.

+0

vâng, tôi đã sử dụng tệp js nhưng thực tế là, tôi đã sử dụng lại mã đó (jsp và js) ở những nơi khác nhau của dự án nhưng không có vấn đề gì về chúng. Trường hợp ở đây là, tôi đã sử dụng ajax để yêu cầu trang jsp tại đây. .. – Ali

33

Bạn cũng có thể nhận được lỗi này nếu bạn đang làm một cuộc gọi AJAX từ jQuery và bạn vượt qua thừa một dấu phẩy vào cuối mảng, như vậy:

$.post('http://example.com/example1/',{ 
    field1:sField1, 
    field2:sField2, 
    field3:sField3, 
    field4:sField4, 
    field5:sField5, 
},function(sData){ 
    if (console) { console.log(sData); } 
}); 

Thấy rằng dấu phẩy sau sField5? Đó là lỗi cú pháp. Không có trình duyệt nào khác quan tâm đến IE. IE sẽ ném lỗi tối đa 80020101 (có nghĩa là "không thể đánh giá Javascript của bạn - bạn có lỗi cú pháp") và nó sẽ thực sự khó hiểu nếu bạn sử dụng jQuery vì trình gỡ lỗi sẽ chỉ trỏ đến dòng eval trong jQuery. Trình gỡ lỗi IE sẽ không sử dụng để bạn theo đuổi điều này, nhờ vào Microsoft. Lần tiếp theo bạn gặp lỗi 80020101, đề xuất của tôi là:

  1. Tìm kiếm bất kỳ cuộc gọi AJAX nào và tìm thêm dấu phẩy.
  2. Tìm kiếm bất kỳ mảng nào (như nội dung trong dấu ngoặc nhọn), nơi có thêm dấu phẩy ở cuối.
  3. Nếu vẫn không hiệu quả, hãy xem kỹ thuật bạn sử dụng <!--//--> để đánh dấu Javascript của mình. Đây là một vấn đề được biết đến với jQuery cho đến 1.7.2 và nó vẫn là một lỗi đã được đệ trình với nhóm jQuery.
  4. Chuyển sang phiên bản mới nhất của jQuery.
  5. Bắt đầu xóa từng phần nội dung ra khỏi khối tập lệnh của bạn và thêm các mục vào từ từ cho đến khi bạn tìm thấy đoạn mã vi phạm.
+1

Chỉ cần cập nhật jQuery là đủ để giải quyết vấn đề này cho tôi. – CarComp

5

Tôi hiện đã gặp vấn đề này với jQuery (ngay cả phiên bản mới nhất) hai lần. Giải pháp ONLY là sao chép và dán tất cả của javascript vào một tệp lớn và chạy qua JSLint (jsfiddle.net, được ưu tiên).Nó có thể chỉ ra một số lỗi nhỏ (bao gồm dấu phẩy thêm ở một trong các cấu trúc gọi lại dữ liệu của tôi) mà tôi có thể sửa và sau đó sao chép và dán lại vào vị trí ban đầu của chúng để loại bỏ sự cố.

http://jsfiddle.net/devlshone/QKxup/3/

4

Trong trường hợp của tôi, tôi phát hiện ra rằng có một nhận xét HTML trong mã JS của tôi là:

<script type="text/javascript"> 
<!-- Unexpected Comment --> 
//code... 
</script> 

tôi thay <!-- --> với /* */ và nó làm việc. Hy vọng nó sẽ giúp ai đó.

5

Tôi đã gặp lỗi tương tự, nhưng trong trường hợp của tôi có một từ dành riêng 'class'. Dưới đây là một đoạn mã để làm điều này rõ ràng:

function foo(ajaxResponse){ 
    $(elem).attr('class', ajaxResponse.class); 
} 

Tôi viết lại này như:

$(elem).attr('class', ajaxResponse['class']); 

Hy vọng điều này là hữu ích.

0

Có lỗi này cho một vấn đề khác khi sử dụng jquery.

Thay đổi $ (tài liệu) .ready (function() {}); ĐẾN $ (cửa sổ) .load (function() {});

0

Muốn chia sẻ kinh nghiệm của tôi. Trong trường hợp của tôi nó không có gì để làm với javascript. Đó là vì dòng này trong HTML của đồng nghiệp sử dụng góc cạnh:

<img data-ng-model="previewImage" src="" data-ng-src="{{imageURL}}" alt="" ></img> 

Tôi nhớ rằng có một src trống thường là điều xấu. Tôi đã điền vào trường src và lỗi đã biến mất.

0

Tôi gặp phải lỗi này khi sử dụng jQuery 1.10.2 và đang tải tệp không tồn tại.

Vì vậy, hãy đảm bảo rằng tệp bạn cố gắng tải là chính xác, nếu không IE8 có thể ném lỗi 80020101.

0

vấn đề của tôi đã được gây ra bởi:

var a = b = c = true; 

quay sang

var a = true; 
var b = true; 
var c = true; 

Bây giờ nó hoạt động tốt!

Bye MA

1

Tôi chạy vào vấn đề này và thông báo lỗi của IE là không phải là rất hữu ích. Vì vậy, tôi đã truy cập trang web của mình trong Mozilla Firefox và Firefox có thể xác định chính xác dòng mã đã gặp sự cố. Không phải là bản sửa lỗi công nghệ cao nhưng nếu bạn đang sử dụng IE để gỡ lỗi vấn đề này, hãy thử tải trang web của bạn trong FF (với phần mở rộng Firebug được cài đặt) và kiểm tra đầu ra của bàn điều khiển.

0

Tôi cũng chạy vào vấn đề này, nhưng sau khi tham gia một cái nhìn cận cảnh tập tin kịch bản của tôi, tôi phát hiện ra rằng tôi đã thực hiện một sai lầm nhỏ mà chạy trơn tru trên trình duyệt khác nhưng IE nhặt nó và chỉ cho tôi lỗi:

mã trước đó của tôi là:

var autocomplete = new google.maps.places.Autocomplete(searchTextField ,options); 

Sau khi phân tích, tôi đã nhận rằng searchTextField là id và tôi có để có được giá trị của nó trước khi sử dụng nó

Vì vậy, tôi thay đổi nó thành:

var input = document.getElementById('searchTextField'); 
var autocomplete = new google.maps.places.Autocomplete(input,options); 

và hoạt động tốt.

Đó là thực sự mát mẻ mà IE phát hiện nó, nhưng Microsoft có thể nâng cao trình duyệt để hiển thị lỗi cụ thể cho nguyên nhân cụ thể, bởi vì nó rất bực bội nếu cùng một mã làm việc trong các trình duyệt khác

0

Tôi đã bỏ lỡ để đặt 'var' trong trước tuyên bố biến, đặt nó giải quyết vấn đề.

<script> 
    uploadDocument = "Some message"; 
</script> 

tôi cố định nó:

var uploadDocument = "Some message"; 

Nguyên nhân là tôi đã có một phần tử trong các hình thức với cùng id "uploadDocument", do đó việc khai báo trên đã gây ra html để có bị thay đổi

0

trong trường hợp của tôi vấn đề là tình trạng hôn mê vô ích bổ sung trong Ajax POST vào cuối hàm lỗi:

$.ajax({ 
    type: 'POST', 
    dataType: 'text', 
    url: '../Client/GetName', 
    data: { ClientId: id}, 
    success: function (respone) { 
       alert(respone); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
       alert(xhr.statusText); 
    }, //<- look here, this guy complicated my simple programmer life 
}); 

Sau khi gỡ bỏ tất cả mọi thứ hoạt động tốt.

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