JavaScriptエラー(キャッチされないSyntaxError:予期しない入力の終了)


211

FireFoxでは機能するがChromeやIEでは機能しないJavaScriptコードがいくつかあります。

Chrome JS Consoleで次のエラーが発生します。

「Uncaught SyntaxError:Unexpected end of input」。

私が使用しているJavaScriptコードは次のとおりです。

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

それはエラーが最後の行にあると言います });


2
私はChromeのV8を知ってDELETEいます。サーバー上では、応答が204successではなく200の場合、このエラーも発生します。誰かがこれも受けている場合に備えて、頭を上げてください。 success - no response
エリックD.ジョンソン

回答:


401

2番目を追加し});ます。

適切にインデントすると、コードは次のようになります

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

あなたはアウターを閉めたことはありません$(function() {


278
レッスンは、常にコードをインデントする(そして正しくインデントする)ことです。
SLaks

4
ああ、VIMがその構文エラーをキャッチしてくれればいいのに。不注意な構文エラーで時々無駄になる時間がどれほど信じられません。
HeyWatchThis

4
レッスンは、常に適切なプラグインを備えた適切なエディターを使用することです。これにより、括弧のペアを検出したり、強調表示したり、問題を修復したりできます。
SławomirLenart

1
@HeyWatchThis Syntastic for Vimを試してみてください。
ネイサンロング

1
JavaScriptファイルを保存するたびにjshintを実行するように設定されたvim / neovimにneomakeを使用しています。構文エラーがある場合、vim / neovimのガターに警告/エラーシンボルが表示されます。その行にカーソルを合わせると、vim / neovimコマンドラインにエラーの内容を示すメッセージが表示されます。
trusktr

89

私の場合、空のJSONを解析しようとしていました。

JSON.parse(stringifiedJSON);

言い換えれば、何が起こったのか:

JSON.parse("");

3
残念ながら、これに$.parseJSONはjquery 1.11.2が含まれます
Nasser Al-Wohaibi 2015年

37

http://jsbeautifier.org/は、縮小されたJSコードをインデントするのに役立ちます。

また、Google Chromeでは「きれいなプリント」を使用できます。以下のスクリーンショットの例を参照してください。jquery.min.js私のブラウザからは、スタックオーバーフローからうまくインデントされています:)

ここに画像の説明を入力してください


14

コードを少しフォーマットすると、内部のホバー関数を閉じただけです。下にマークされている外側のパーツを閉じていません:

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

5

私の場合、ブックマークレットでは単純な二重引用符の問題になりました。ブックマークレットでは単一引用符のみを使用することを覚えておいてください。これが誰かを助けるために。


3

JavaScriptブックマークレットを作成しようとしたときにこのエラーが発生しました。何が原因なのかわかりませんでした。しかし、最終的に、私は、次のWebサイトを経由して、ブックマークレットをコードするURLを試してみました:http://mrcoles.com/bookmarklet/と、エラーが去っていきましたので、それは特別なURLとして解釈されるJavaScriptコード内の特定の文字に問題があったに違いありません制御文字。


2
私のjsに//コメントがありました。ブックマークレットのURLに貼り付けるとコード全体が1行になり、//コードの真ん中にあったため、コメントが必要以上にコメントアウトしました。
mflodin 2015年

コメントを削除すると、それも修正されました。
Alex

3

このエラーは主に、空のJSONを解析しようとしたときに返された空のajax呼び出しが原因で発生します。

返されたデータが空の場合にこのテストを解決するには

$.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

私の場合は、それが欠落によって引き起こされた(0)中でjavascript:void(0)アンカーインチ


0

私がJSに追加しているファイルにコメントがあったので、これを取得しました。何が起こっているのか本当に厄介な理由VMですが、事前にレンダリングされたファイルをクリックしてエラーをキャッチすると、正確に何がわかるかがわかりますエラーは、私の場合、私が使用していたコードのコメントを外すだけでした。


0

このエラーは、ページの最後のスクリプトブロックの最後を指していますが、エラーが実際にではonclick="pagename"なくのある要素をクリックしたことが原因であることがわかりましたonclick="window.location='pagename'"。ブラケットが欠けているとは限りません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.