2017-07-30 1 views
0

PHPJSON.parse()は予期しないトークンエラーをスローします。なぜ分からないの?

<?php 

header("Content-type: application/json") ; 
echo json_encode(array("reply" => "SOME_TEXT")) ; 

?> 

は、それがエコー本 - >

{"reply":"SOME_TEXT"} 

Javascriptを

<script> 
$.get("script.php" , function(data) { 
    var reply = JSON.parse(data) ; 
}) ; 
</script> 

JSはunexpected token in JSONをスローします。しかし、PHPコードのヘッダーをヘッダー( "Content-type:text/javascript")または"text/plain"に置き換えると正常に動作します。

+1

JSONペイロードが有効であることを確認しましたか? https://jsonlint.com/ –

+1

JSがエラーをスローする場合JSONは無効です。信頼できない理由はありません。 – zerkms

+0

console.log( "data" + data)を使用します。スクリプトが正しいJSONコードを取得しているかどうかを確認します。 – onno204

答えて

6

jQueryは、ヘッダがapplication/jsonに設定されているとデータを自動的に解析し、オブジェクトを解析しようとしています。また、それが解析される保証する

の代わりに$に.get()の)$ .getJSONを(使用して、コメント@charlietftとして

$.get("script.php" , function(data) { 
    console.log(data.reply); 
}) ; 

:あなたはapplication/jsonに設定ヘッダとJSON.parseせずにそれを使用することができます

+2

'$ .get()'の代わりに '$ .getJSON()'を使っても、それが解析されていることを保証し、エラーコールバックに行くでしょう。 – charlietfl

+0

ありがとう! @charlietfl – baao

関連する問題