2012-02-23 9 views
1

私はjson_encode()を使用しています。使用しているファイルはJavaScriptグリッドに解析されます。例えばJSONエラーを検出できますか

Index.phpは私がJSONに私のPHPの配列を解析data.phpを呼び出すJavaScriptを持っています。質問は、Index.phpがデータを正しく取得しているかどうかを知る方法があるかどうかです。何らかのデバッグ?

答えて

1

を参照してください。

JSONLintを使用してJSONを確認してください。

2

json_decodeは、それが失敗した場合NULLを返します。

if (json_decode($your_json_var, true) === NULL) 
{ 
    // NULL is returned if the json cannot be decoded or if the 
    // encoded data is deeper than the recursion limit. 
} 

は、同様に'null'と比較、これは完全に保存するようにするには:PHP 5.3以降を使用することをお勧めします

if (json_decode($json, true) === NULL && $json !== 'null') 
{ 
    // NULL is returned if the json cannot be decoded or if the 
    // encoded data is deeper than the recursion limit. 
} 

、それはアクセスを提供していますエラー状態が発生したときに!== JSON_ERROR_NONEを返すjson_last_errorになります。

1

Index.phpスクリプトは、失敗または成功を示すステータスコードを返す必要があります。

はあなたのJavaScriptを確認するには、FirefoxやChromeのデベロッパーツールのためFirebugのようなものを使用することができますRFC 2616 - 10 Status Code Definitions

1

... Index.phpがデータを正しく取得しているかどうかを知る方法があります。あるいは何らかのデバッグ?

あなたは適切なクライアント側のデバッガを使用している(と2012年にならないno excuseがあります!)場合は、データは「ネットワーク」タブまたは類似を使用してサーバーに前後に行く見ることができます。 json_encodeが無効なJSONを予想していないと想定しています(たとえば、構造などを試しているなど)。クライアントに送り返されたデータをコピーしてhttp://jsonlint.comに貼り付けて、最終結果を確認できるように再フォーマットすることができます。

1

JavaScriptインタラクションでjQueryなどのライブラリを使用している場合、モニタすることを選択するとエラーイベントが発生する可能性があります。 ここに「エラー」が表示されます:http://api.jquery.com/jQuery.ajax/

ブラウザでdata.phpファイルを直接呼び出すこともできます。データがある場合は、返されるデータがあるかどうかを確認してください。

2

json_decodeが潜在的にリテラルTRUEFALSE、またはNULL値を返すことができるので、問題をチェックするための唯一の100%安全な方法がjson_last_errorです:

もちろん
if (json_last_error() !== JSON_ERROR_NONE) { 
    ... decoded with error ... 
} 

、これはPHP 5.3のみで追加されました。これに先立って、返される構造体の期待されるデータをチェックする必要があります。

関連する問題