web-dev-qa-db-ja.com

Chrome:不明なSyntaxError:予期しない入力の終わり

Google Chromeに自分のページを読み込むと、コンソールに曖昧なエラーが表示されます。

不明なSyntaxError:予期しない入力の終わり

何が原因なのかわかりません。このエラーのデバッグ方法は?

164
dlaurent86

この特定のエラーは v8 についての1つの迷惑な事実です。ほとんどの場合、あなたのJavaScriptは何らかの形で壊れています。例えば}やそれに似たものがない。

与えられた例では、これも "予期しない入力の終わり"をもたらします。

eval('[{"test": 4}') // notice the missing ]

しかし、問題の根本的な原因は、リクエストされたJSONのURLがContent-Typetext/htmlを持っているため、ChromeがHTMLとして解析しようとしているため、予期しない結果となっている含まれている画像タグが解析されているという事実による入力の.

Content-Typetext/plainに設定してみてください。問題は解決するはずです。

それにもかかわらず、V8は正確にを指示することについてよりよい仕事をすることができました。入力は突然終了しました。

215
Ivo Wetzel

Mozilla用のFirebugを試してみてください。欠けている}の位置が表示されます。

http://getfirebug.com/

70
user669677

別の 同様の質問 については 私の場合 を参照してください。

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

JSON.parse(stringifiedJSON);

言い換えれば、起こったことは次のとおりです。

JSON.parse("");
32
falsarella

JavaScriptコードで右中括弧(})を省略した場合、このエラーが発生します。あなたのブレースが適切にバランスが取れていることを確認してください。

10
HBP

記録については、このエラーのさまざまな原因を見つけようとしている人のためのものです。空のHTML5データ属性

data-mydata = ''

エラーも発生します。データ値がNULL文字列で、属性がまったく含まれていない場合に確認する必要があります。言うまでもありませんが、これはスクリプトで生成されたHTMLに大きく関連しています。

9
DroidOS

私にとっての問題は、HTTP 201(作成済み)を返し、要求本体を返さないPOST要求に対してdataType: "json"を使って$ .ajaxを実行していたことです。修正は単にそのキー/値を削除することでした。

8
Blaskovicz

JSHint は、括弧がない場所や構文が間違っている場所を見つけるのに適しています。

6
Harfatum

このエラーのもう1つの原因:APIが意図的に応答本体なしで応答したが、200 OKステータスコードではなく204 No Contentステータスコードで応答した場合。 JavaScriptライブラリの中には、コンテンツがないと予期しないコンテンツタイプにうまく反応しない場合があるため、正しいステータスコードを使用してください。

5
Andrew

間違いを起こした開き括弧が間違いなくあるでしょう。

Firefoxでページを開いてからFirebugを開いてコンソールを確認することをお勧めします - 不足している記号が表示されます。

スクリーンショットの例:

Firebug highlighting the error

3
Manoj Kumar

私の問題はGoogle Chromeのキャッシュにありました。私はFirefox上で私のWebアプリケーションを実行することによってこれをテストしました、そして私はそこにそのエラーを得ませんでした。それで、私はGoogle Chromeのキャッシュを空にすることを試みることに決めました、そして、それはうまくいきました。

2
Amir Al

これは非同期操作なので、responseTextに値がロードされる前にonreadystatechangeが発生する可能性があります。エラーが続くかどうかを確認するには、window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000);を使用してみますか? BOL

1
safhac

Am/pmの切り替えを押すとき、私は同様の問題がangularjsのためのuiブートストラップ指令 - uib-datepickerの使用に直面しました。

(不明)のイベントハンドラでエラーが発生しました:SyntaxError:JSON入力角度タイムピッカーの予期せぬ終了

プラグイン 'Trans-over'(クリックされるとWordが翻訳される)が原因であることが判明しました。インターネットで何も見つけられなかったので、私の答えが誰かに役立つかもしれません。

0
OlehZiniak

anchorタグでエラーが発生した場合は、「Onclick」を「href」または「href」を「Onclick」に置き換えてください。

0

JavaScriptコードが1行に縮小されている場合、このエラーのもう1つの原因は、コメントに//ではなく/**/を使用することです。

悪い(あなたの関数の終わりの//を含む}の後のすべてをコメントアウトする)

function example() { //comment console.log('TEST'); }

良い(あなたのコメントを限定する)

function example() { /* comment */ console.log('TEST'); }
0
Johan Doe

同じ問題に直面したときに、リクエストでAcceptヘッダーをapplication/jsonに設定することは私にとってはうまくいきました。

0
Stefano Populin

私はこのエラーを抱えていて、ここに示されているreadyStatestatusに対するガードを追加することによってそれを修正しました:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
          // Your code here
   }
};
0
Brick