JavaScript hatası (Yakalanmamış Sözdizimi Hatası: Beklenmedik giriş sonu)


211

FireFox'ta çalışan ancak Chrome veya IE'de olmayan bazı JavaScript kodlarım var.

Chrome JS Konsolu'nda aşağıdaki hatayı alıyorum:

"Yakalanmamış SyntaxError: Beklenmedik giriş sonu".

Kullandığım JavaScript kodu:

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

Hatanın son satırda olduğunu söylüyor. });


2
Chrome'un V8'inin DELETEsunucudaki bir yanıt successiçin 204 yerine 200 olması durumunda da success - no responsebu hatayı alacağını biliyorum. Herkesin bunu almasýna karţýlýk gelir.
Eric D. Johnson

Yanıtlar:


402

Bir saniye ekleyin });.

Doğru girintili olduğunda, kodunuz

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

Hiç dışını kapatmadın $(function() {.


278
Ders, her zaman kodunuzu girintilemek (ve doğru girintilemek).
SLaks

4
Ah adamım, keşke VIM'im sözdizimi hatasını yakalasaydı. Bazen dikkatsiz sözdizimi hatalarıyla ne kadar zaman kaybettiğime inanamıyorum.
HeyWatchThis

4
Ders, parantez eşleşmesini algılayabilen, vurgulayabilen ve hatta sorunları onarabilen iyi eklentilere sahip iyi bir düzenleyici kullanmaktır.
Sławomir Lenart

1
@HeyWatchThis Syntastic for Vim'i deneyebilirsiniz.
Nathan Long

1
Bir JavaScript dosyasını her kaydettiğimde jshint'i çalıştırmak üzere yapılandırılmış vim / neovim için neomake kullanıyorum. Sözdizimi hatalarım varsa, vim / neovim'in oluklarında uyarı / hata sembolleri göreceğim. İmlecimi bu satıra koyduğumda, vim / neovim komut satırı hatanın ne olduğunu belirten bir mesaj gösterecektir.
trusktr

89

Benim durumumda, boş bir JSON ayrıştırmaya çalışıyordum:

JSON.parse(stringifiedJSON);

Başka bir deyişle, olan şuydu:

JSON.parse("");

3
Bu, ne yazık ki, $.parseJSON1.11.2
Nasser Al-Wohaibi

37

http://jsbeautifier.org/ küçültülmüş JS kodunuzu girintilemekte yardımcı olur.

Ayrıca, Google Chrome ile "güzel baskı" kullanabilirsiniz. jquery.min.jsStack Overflow'da doğrudan tarayıcımdan girintili olarak gösterilen aşağıdaki örnek ekran görüntüsüne bakın :)

resim açıklamasını buraya girin


14

Kodunuzu biraz biçimlendirdiğinizde, yalnızca iç gezinme işlevini kapattınız. Aşağıda belirtilen dış parçaları kapatmadınız:

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

5

Benim durumumda, bir varlık sona erdi basit çift tırnak benim sorunu bookmarklet sadece işaretcikler üzerinde tek tırnak kullanmak hatırlıyorum. Bunun birine yardım etmesi durumunda.


3

Bir javascript yer işareti yazmaya çalışırken bu hatayı aldım. Buna neyin sebep olduğunu bulamadım. Ama sonunda aşağıdaki web sitesi aracılığıyla yer işaretini kodlayan URL'yi denedim: http://mrcoles.com/bookmarklet/ ve sonra hata gitti, bu yüzden javascript kodundaki belirli karakterlerin özel URL olarak yorumlanmasıyla ilgili bir sorun olmalı kontrol karakterleri.


2
Ben benim js bir // yorum vardı, çünkü bookmarklet url yapıştırarak tüm kodu bir astar yaptı // // kodun ortasında olduğunu istediğimden biraz daha fazla yorum yaptı.
mflodin

Yorumları kaldırmak benim için de düzeltildi.
Alex

3

Bu hata, boş bir JSON ayrıştırılmaya çalışılırken, çoğunlukla boş döndürülen ajax çağrılarından kaynaklanır.

Döndürülen veriler boşsa bu testi çözmek için

$.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);
        }
    }
});

3

Benim durumumda, bu eksik bir neden oldu (0)yılında javascript:void(0)bir çapa içinde.


0

JS'ye eklediğim bir dosyada bir yorum yaptığımdan beri bunu aldım, neler olduğunu gerçekten garip bir neden - VMönceden oluşturulmuş ve hatayı yakalayan dosyayı tıkladığınızda, tam olarak ne olduğunu öğreneceksiniz. hata, benim durumumda sadece kullandığım bazı kodu uncommenting oldu.


0

Ayrıca bir sayfadaki son komut dosyası bloğunun sonuna işaret eden bu hatayı aldım, sadece hatanın aslında onclick="pagename"yerine bir öğeye tıklamaktan geçtiğini fark ettim onclick="window.location='pagename'". Her zaman eksik bir ayraç değildir!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.