私はこの質問が何度も尋ねられたことを知っていますが、私の問題との類似性を見つけることができません。このエラーはChromeでのみ発生します。他のすべてのブラウザではすべて問題ありません。私はいくつかの場所でJSONを使用してデータを返しますが、私のコードは他のブラウザーで動作するため、何も問題がないと思います。 Chromeは(私のコードで)エラーの場所を表示しませんが、これらのエラーを表示します:
これは私がJSONを使用する方法です:
$.post("getData.php", {'id' : id}, function(data){
var obj = jQuery.parseJSON(data);
.
.
.
... some mysqli query
$data = $query->fetch_assoc();
echo json_encode($data);
だから私はここで問題が表示されない、誰かがこれで私を助けることができます。
@Mario回答を使用した_Uncaught SyntaxError: Unexpected token <
_のエラーですが、それは私の問題の一部にすぎませんでした。もう1つの問題は、javascriptがPHPファイルからデータを取得できないことです。これは、このコードを使用して、PHP file:header("Content-Type: text/javascript; charset=utf-8");
この回答は、この問題を解決するために別の質問を開いたこのリンクにあります。 PHP in Chrome =およびOpera
ネットワーク(コンソール)を確認し、サーバーからの回答を確認できます...「<」が応答の最初の文字になります。 「<」行Zの未定義のインデックスXYのようなもの>
これに対する私の解決策は信じられないほどです。
<script type="text/javascript" src="/js/dataLayer.js?v=1"></script>
Src属性のファイル名は小文字にする必要があります。
<script type="text/javascript" src="/js/datalayer.js?v=1"></script>
そして、それはやや不可解に問題を修正しました。
どちらの場合も、参照はテストのために404を返していました。
サンプルアプリケーションをテストすると、これらの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:Unexpected token <
インターネット上の元の場所に変更し、解決しました。
<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>
Chrome(およびおそらくSafari)で発生する可能性のあるエラーを上書きするには、AjaxパラメーターをdataType: "json"
として設定してみてください。その後、parseJSON()
obj
で返されるのは、返される応答がデシリアライズされるためです。
私はこのコードにコメントしました:// $('#description').val('<?php echo $_POST['description']; ?>');
そして私はそのエラーを受け取りました。
header("Location: route_to_main_page");
カスタム404エラー処理ファイルがあるときに、この問題が発生しました。いくつかのhtmlコンテンツをスローする代わりに、メインページのURLにリダイレクトすることを想定していました。うまくいきました。
次に、これを次のプロジェクトのスケルトンとして使用したため、新しいプロジェクト(異なるURL)で実際に「route_to_main_page」を変更せずに「route_to_external_url」にしたため、コード内の404エラー(cssスタイルシート、jsライブラリ「ncaught SyntaxError:Unexpected token <」。
要求しようとしているリソースは、Webアプリの設定を介してアクセスが制限されている可能性があります。つまり、アプリケーションがファイルを処理するには、ユーザーがログに記録されている必要があります。
これをWeb.Configファイルに追加してみてください(これは.NETアプリケーション用):
<location path="js/resourcefile.js">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
終了configurationタグの前であればどこにでも配置できます。
Jsファイルが実際に運用環境に展開されていないことに気づいた後、いくつかのjsファイルをフォルダーに移動してから運用環境に展開したときに、同様の問題に直面しました。そう
したがって、jsファイルがない場合、サーバーは次のように応答します
<!doctype html>
<html>
<someTag />
<AnotherTag />
</html>
Uncaught SyntaxError:Unexpected token <を取得する理由
Ajaxファイルのアップロードなどを実行しようとしている場合は、ajax応答テキストを印刷した後、さらにHTMLを表示する必要があります。おそらく、このエラーメッセージが表示されます。 PHPフレームワークを使用している場合、アプリケーションを終了するにはフレームワーク構文に従う必要があります。純粋なPHPをコーディングしている場合、ajax応答テキストの後に 'exit'を使用できます。
これがこの問題の解決策を見つける時間を節約するのに役立つことを願っています。 :)ハッピーコーディング!!!
同じエラーがありました。私の問題は、プロジェクトディレクトリ内を移動し、サーバー上の静的ファイルへのパスを新しいパスを反映するように調整できなかったことが原因でした(つまり、./src/public
しかし./public
)。
誰もがこれと以前の解決策から異なる経験を持っているようです:)これは私の「物語」です。
私の事はajaxで取得したvalidate.phpファイルから来ました。出力は次のとおりでした。
$response['status'] = $status;
$response['message'] = $message;
$response['param'] = $param;
echo json_encode($response);
また、「予期しないトークン<」エラーの原因となるエラーは、場合によっては$ messageが宣言されていないことです(ただし、$ statusと$ paramのみ)。そのため、これをコードの最初に追加しました。
$message = ''; // Default value, in case it doesn't get set later on.
このシナリオでは、これらの「ささいなこと」が非常に重要になる可能性があります。したがって、コードを実際に確認して、防弾にしてください。
に変更する
$.post({
url = 'getData.php',
data : { 'id' id } ,
dataType : 'text'
});
このように、ajaxはデータをJSONなどに解析しようとしません。
私が働いた唯一の場所は、index.html
が存在するpublic
フォルダーにスクリプトを配置し、<script type="text/javascript" src="test/test.js"></script>
を<body>
タグ内に配置するときだけです。