0

くだらないmysql Db呼び出しとは対照的に、PDOフォーマットに変更していた長いPHPスクリプトを実行します。スクリプトの最後で、$output は次でエンコードされた json です。

echo json_encode( $output );

2 つのスクリプトを実行すると、画面への出力は同一ですが、私の jquery DataTables プログラムは、mysql の戻り値ではなく、PDO エンコードされた結果でエラーを返します。

私は2つの結果で正規表現を実行しましたが、それらは同一であるため、なぜこれが起こっているのかはわかりません。

誰も同じ問題を抱えたことがありますか?

編集

DataTables エラー状態:

DataTables 警告: サーバーからの JSON データを解析できませんでした。これは、JSON フォーマット エラーが原因です。

4

5 に答える 5

1

使用する1つの方法は、Firebug(またはWebkitのインスペクターなど)からJSONリターンを取得し、http://jsonlint.comで実行することです。JSON文字列が同一である場合、解析が失敗する原因となっている何か他のもの(おそらく、PHP警告、またはどこかに文字列のエコー)が出力されていると推測します。DataTablesはjQuery1.4に組み込まれているJSONパーサーを利用しており、パーサーが文字列をデコードできない場合にこのエラーが発生します。

それでも問題が解決しない場合は、ページへのリンクを教えていただけますか?

于 2010-11-19T07:33:28.910 に答える
1

私は同じ問題を抱えていますが、準備されたステートメントで PDO を使用する場合のみです。JSONLint は出力を検証しますが、DataTables はそれを受け入れません。PHP データソースから JSON データをフェッチするために getJSON を使用して独自の関数を作成しましたが、これは実際に機能します。さらに、mysqli を使用している複製データソースを作成しました。ブラウザで出力を表示し、notepad ++ で 2 つの出力を比較すると、どちらも同じです。

于 2011-05-11T12:54:46.147 に答える
1

私もこの問題を抱えています。jquery 1.5.1を使用しているからです。ユーザー 1.4.4 に変更すると、問題はなくなります。

于 2011-03-24T07:22:31.833 に答える
1

グーグルからここに来るすべての人のために、これを試してください:

echo '('.json_encode( $output ).')';
于 2011-04-13T02:56:47.103 に答える
0

まったく同じエラーが発生し、バリデーターを使用して、これを使用してフォーマットが有効であることを確認しました: http://jsonformatter.curiousconcept.com/

それは有効であり、私の愚かな間違いのために、私の PHP スクリプトが他のデータを「エコー」していたことが判明しました。

ブラウザーで JSON を生成するスクリプトを直接呼び出して、他のものが表示されているかどうかを確認し、dataTable が受け取る JSON コードを台無しにしてみてください。

于 2012-04-17T17:20:57.403 に答える