2013-10-24 34 views
17

この質問は何度も尋ねられていますが、私の問題との類似点は見つかりません。私はこのエラーをChromeでのみ取得しています。他のすべてのブラウザではすべて問題ありません。私はいくつかの場所でJSONを使ってデータを返しますが、私のコードは他のブラウザでも動作するので、間違っているとは何も仮定しません。エラーが(私のコードで)ここで Chromeは、それは私にこれらのエラーを示して私を示していない。Uncaught SyntaxError:予期せぬトークン<Chromeで

enter image description here

これは私がJSONを使う方法です:

$.post("getData.php", {'id' : id}, function(data){ 
     var obj = jQuery.parseJSON(data); 
. 
. 
. 

... some mysqli query 
$data = $query->fetch_assoc(); 
echo json_encode($data); 

だから私は表示されませんここでの問題は、誰かが私にこれを手伝うことができます。

+0

ステータスコード200とは何ですか?そうでない場合は、エラー応答のHTMLを取得している可能性があり、そのような種類のエラーを解析して生成しません。あなたのSQLクエリでおそらく何か。 – McRui

+0

すべてが200でOKです。また、いくつかの場所では200が見つかりました。私が言ったように、それはFirefoxで完全に動作しますが、Firefoxで動作すると何らかのエラーが出る理由はありません。 – Alen

+0

AdBlockを無効にしてテストしましたか? – McRui

答えて

6

@Marioの回答を使用してUncaught SyntaxError: Unexpected token <でエラーが発生していますが、これは問題の一部に過ぎません。もう1つの問題は、PHPファイルからデータを取得できないことです。このコードを使用してPHPファイル内で解決しました:header("Content-Type: text/javascript; charset=utf-8"); この問題は、この問題を解決するために別の質問を開いたこのリンクにあります。Can't receive json data from PHP in Chrome and Opera

+0

私はこの問題を2回行っていました。初めての解決策は、 '.php'ファイル内のすべての' echo 'を異なるエントリの1つの配列に置き換えることでした。 2回目は、もっと簡単でした。私の '.php'ファイル(このファイルは' <! - comment ...-> 'のように始まりました)の上にあるコメントを削除しなければなりませんでした。これは '<'がどこから来たのかです。 –

+4

それはまだ私のために動作しません。マリオの答えは何だったのか、私はそれを見つけることができません。 – es1

16

あなたのネットワーク(コンソール)を確認し、サーバーからの回答を見ることができます... "<"があなたの応答の最初の文字になります。 >行Zにおける「< 『未定義のインデックスXYような何か』

+0

このような応答はありません。ネットワークとコンソールを確認しました。 – Alen

+0

ライブサンプルを提供できますか? – delueg

+1

申し訳ありませんが、できません。私はそれが最初の<記号のために私にエラーを与えることに気づいた。だから、現在最初のにあります、もし私が<を削除するなら、それは私に同じエラーを与えますが、代わりに<それは言う!予期しないトークンです。 – Alen

2

あなたは(そしておそらくSafariで)Chromeで発生する可能性のあるエラーを上書きするには、dataType: "json"としてAjaxのパラメータを設定してみてください。そして、あなたがparseJSON()を呼び出すべきではありませんobjの返信はデシリアライズされているため、

+1

このエラーはもう表示されませんが、サーバーからのデータは受信されませんが、Firefoxでも同じコードが動作します: – Alen

+0

どのような種類あなたはajaxレスポンスから期待していますか?html、JSON? – McRui

+0

JSONは、私が貼り付けたコードでわかるように、 – Alen

0

Ajaxファイルのアップロードなどを実行しようとしている場合は、ajaxレスポンステキストを出力した後で、さらにHTMLを表示しなくてはなりません。おそらく、このエラーメッセージが表示されます。 PHPフレームワークを使用している場合は、フレームワークの構文に従ってアプリケーションを終了する必要があります。純粋なPHPをコーディングする場合は、ajaxレスポンステキストの後に 'exit'を使用できます。

これは、これを解決するための時間を節約するのに役立ちます。 :)ハッピーコーディング!!!

7

私の解決策はかなり信じられないほどです。

<script type="text/javascript" src="/js/dataLayer.js?v=1"></script> 

小文字にする必要src属性でファイル名:

<script type="text/javascript" src="/js/datalayer.js?v=1"></script> 

、やや不可解な問題を修正しています。

どちらの場合も、参照はテストのために404を返していました。 Ajaxは、JSONまたは類似

+0

私は同じ問題を抱えていたので、ファイル名を別の名前に変更してしまいました。ファイル名の大文字がどこにもありませんでした。 – Deke

0

$.post({ 
     url = 'getData.php', 
     data : { 'id' id } , 
     dataType : 'text' 
     }); 

に変更、それをこの方法では、誰もが同様にこのからの差分経験とtherforeのソリューションを持っているようだ:)これは "私でありますストーリー"。

私のことは、ajaxで取得されたvalidate.phpファイルから来たものです。

$response['status'] = $status; 
$response['message'] = $message; 
$response['param'] = $param; 

echo json_encode($response); 

そして、「予期しないトークン<」エラーの原因となるエラーは単にそのいくつかの例では$メッセージが宣言されていなかった(だけ$ステータスと$のparam)だった:出力があることを意味しました。だから、コードの冒頭にこれを加えました。

$message = ''; // Default value, in case it doesn't get set later on. 

このような「小さなもの」は、このシナリオでは非常に重要なものかもしれません。だから、本当にあなたのコードをチェックし、それを弾丸にしてください。

0

にデータを解析しようとはしません

1

私はこのコードにコメントしました:// $('#description').val('<?php echo $_POST['description']; ?>');と私はそのエラーが発生しました。

4

サンプルアプリケーションのテスト時に、この2行で同じエラー(「Uncaught SyntaxError:Unexpected token <」)が発生しました。

<script type = "text/javascript" src="raphael-min.js"></script> 
<script type = "text/javascript" src="kuma-gauge.jquery.js"></script> 

コントロールの後で、ローカルファイルの場所が正しくなく、ローカルサーバーアプリケーションがデフォルトページを結果として返すことに気付きました。クライアントアプリケーションはファイルを見つけることができますが、設立されたファイルは* .jsファイルではなくデフォルトページです。だから私はUncaught SyntaxErrorを受け取る:予期しないトークン<

私はintenetと解決された元の場所に変更されました。

<script type = "text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script> 
<script type = "text/javascript" src="//www.jqueryscript.net/demo/Creating-Animated-Gauges-Using-jQuery-Raphael-js-kumaGauge/js/kuma-gauge.jquery.js"></script> 
+0

私のスクリプトは 'stuff/scripts'サブディレクトリにありましたが、' stuff/whatever'の代わりに 'stuff/whatever /'というURLに行きました。 'stuff/whatever/scripts'は存在しなかったからです。 – Noumenon

1
header("Location: route_to_main_page"); 

カスタム404エラー処理ファイルを持ちながら、私はこの問題が発生しました。いくつかのhtmlコンテンツを投げるのではなく、メインページのURLにリダイレクトすることを想定していました。それはうまくいった。

次に、これを次のプロジェクトのスケルトンとして使用したので、実際に新しいプロジェクト(別のURL)の "route_to_main_page"を変更しても "route_to_external_url"になったので、コード内の404エラー(CSSスタイルシート、ライブラリ)は、 "未知のSyntaxError:予期しないトークン<"を返します。

0

同じエラーがありました。私の問題は私のプロジェクトディレクトリを移動し、新しいパスを反映するためにサーバー上の静的ファイルへのパスを調整できませんでした(つまり./src/publicでしたが、./publicだったはずです)。

0

私はjsファイルのいくつかをフォルダーに移動してからプロダクションに配備したときに同様の問題に直面しましたが、jsファイルが実際にプロダクションに配備されていないことが分かりました。だから、

  1. 指定されたパスは、JSファイルが存在しない場合、サーバでは、だから、

正しい

  • サーバー にエラーが表示されているファイルが存在しないことを確認してくださいサーバーは以下の通りで応答

    <!doctype html> 
        <html> 
         <someTag /> 
         <AnotherTag /> 
        </html> 
    

    我々は捕捉されないでSyntaxErrorを取得Thatsなぜ:予期しないトークン<

  • 0

    私はindex.html存在し、これらの<script type="text/javascript" src="test/test.js"></script><body>内部のタグを配置するpublicフォルダにスクリプトを配置する場合、それは私のために働いた唯一の場所です。

    0

    リクエストしようとしているリソースが、ウェブアプリケーションの設定を介してアクセスが制限されている可能性があります。つまり、ファイルを配信するためにはユーザーがログオンする必要があります。 web.configファイルにこれを追加すること

    てみてください(これは.NETアプリケーションためのものです):

    <location path="js/resourcefile.js"> 
        <system.web> 
        <authorization> 
         <allow users="?" /> 
        </authorization> 
        </system.web> 
    </location> 
    

    あなたは閉じ設定タグの前に、どこにでも置くことができます。