2010-10-20 33 views
165

Tôi có một số mã JavaScript hoạt động trong FireFox nhưng không có trong Chrome hoặc IE.Lỗi JavaScript (Uncaught SyntaxError: Kết thúc đầu vào không mong đợi)

Trong Console Chrome JS Tôi nhận được lỗi sau:

"Uncaught SyntaxError: Unexpected end of input".

Các mã JavaScript tôi đang sử dụng là:

<script> 
$(function() { 
$("#mewlyDiagnosed").hover(function() { 
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"}); 
}, function() { 
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"}); 
}); 
</script> 

Nó nói lỗi là trên dòng cuối cùng đó là}) ;

+1

Tôi biết rằng V8 của Chrome, cho 'DELETE' trên máy chủ nếu phản hồi là 200' thành công' thay vì [204] (http://tools.ietf.org/html/rfc2616#section-10.2 .5) 'thành công - không có phản hồi' Tôi cũng sẽ nhận được lỗi này. Chỉ cần đứng đầu trong trường hợp bất cứ ai cũng nhận được điều này là tốt. –

Trả lời

336

Thêm một giây thứ hai });.

Khi thụt vào đúng cách, mã của bạn đọc

$(function() { 
    $("#mewlyDiagnosed").hover(function() { 
     $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"}); 
    }, function() { 
     $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"}); 
    }); 
MISSING! 

Bạn không bao giờ đóng cửa bên ngoài $(function() {.

+228

Bài học là, ** luôn luôn thụt lề mã của bạn ** (và thụt lề chính xác). – SLaks

+2

Oh người đàn ông, tôi muốn VIM của tôi đã bắt gặp lỗi cú pháp đó. Tôi không thể tin rằng bao nhiêu thời gian tôi kết thúc lãng phí đôi khi với lỗi cú pháp bất cẩn. – HeyWatchThis

+3

Bài học là, luôn luôn sử dụng trình soạn thảo tốt với các plugin tốt, có thể phát hiện cặp dấu ngoặc đơn, làm nổi bật nó hoặc thậm chí sửa chữa các vấn đề. –

14

Định dạng mã của bạn một chút, bạn chỉ đóng chức năng di chuột bên trong. Bạn đã không đóng các phần bên ngoài, đánh dấu dưới đây ....

$(// missing closing) 
function() { // missing closing } 
    $("#mewlyDiagnosed").hover(
     function() { 
      $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"}); 
     }, 
     function() { 
      $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"}); 
     }); 
4

Trong trường hợp của tôi, nó đã kết thúc lên trở thành một đơn giản đôi quote vấn đề trong bookmarklet tôi, hãy nhớ chỉ sử dụng dấu ngoặc đơn trên bookmarklets. Chỉ trong trường hợp điều này giúp một người nào đó.

34

http://jsbeautifier.org/ hữu ích khi thụt lề mã JS được rút gọn của bạn.

Ngoài ra, với Google Chrome bạn có thể sử dụng "in đẹp". Xem ví dụ hình dưới đây cho thấy jquery.min.js từ Stack Overflow độc đáo thụt vào ngay từ trình duyệt của tôi :)

enter image description here

84

Trong trường hợp của tôi, tôi đã cố gắng để phân tích một JSON trống:

JSON.parse(stringifiedJSON); 

Nói cách khác , những gì đã xảy ra như sau:

JSON.parse(""); 
+2

Điều này, không may, bao gồm '$ .parseJSON' của jquery 1.11.2 –

2

Tôi gặp lỗi này khi cố gắng viết một bookmarklet javascript. Tôi không thể tìm ra nguyên nhân gây ra nó. Nhưng cuối cùng tôi đã thử URL mã hóa bookmarklet, thông qua trang web sau: http://mrcoles.com/bookmarklet/ và sau đó lỗi đã biến mất, do đó, nó phải là một vấn đề với các ký tự nhất định trong mã javascript được hiểu là ký tự điều khiển URL đặc biệt.

+2

Tôi đã có // nhận xét trong js của tôi, nhận xét nhiều hơn một chút so với tôi muốn kể từ khi dán nó vào url của bookmarklet làm cho toàn bộ mã một lớp lót và // nằm ở giữa mã. – mflodin

2

Lỗi này chủ yếu do các cuộc gọi ajax trả lại trống khi cố gắng phân tích cú pháp trống Json.

Để giải quyết bài kiểm tra này nếu dữ liệu trả về là rỗng

  $.ajax({ 
        url: url, 
        type: "get", 
        dataType: "json", 
        success: function (response) { 

         if(response.data.length == 0){ 
          // EMPTY 
         }else{ 
          var obj =jQuery.parseJSON(response.data); 
          console.log(obj); 
         } 
        } 
      }); 
0

tôi nhận này kể từ khi tôi đã có một bình luận trong một file tôi đã thêm vào JS của tôi, lý do thực sự lúng túng với những gì đang diễn ra - mặc dù khi nhấp vào tệp VM đã được hiển thị trước và bắt lỗi, bạn sẽ tìm ra chính xác lỗi là gì, trong trường hợp của tôi, nó đơn giản là bỏ ghi chú một số mã tôi đang sử dụng.

0

Trong trường hợp của tôi, nguyên nhân là do thiếu (0) trong javascript:void(0) trong một neo.

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