2010-11-19 9 views
0

長いPHPスクリプトを実行しています。私はPDB形式に変更していました。スクリプトの終了時に、$出力をJSONでエンコードされています。私は2つのスクリプトを実行すると、画面への出力は同じですが、私のjQueryのDataTableのプログラムは、PDOエンコードされた結果にエラーを返し、ないエコーがDataTableと一致してもJSON形式のエラーが発生する

echo json_encode($output); 

mysqlの戻り値。

私は正規表現を2つの結果に実行しています。それはIDENTICALなので、なぜこれが起こっているのかは私の外です。

誰でも同じ問題がありましたか?

EDIT

のDataTableのエラー状態:

のDataTable警告: サーバからJSONデータを解析できませんでした。これはJSONの書式設定エラーによって発生した です。

+0

これは、パケットスニッファを取り出すときです。 –

+0

@Ignacio - ハ、スクリプトは "信頼できる"ソースからですが、何が起こっているのかについては完全な犠牲になります – JM4

+0

私は正規表現がおそらくこれを世話したと仮定しますが、16進エディタ? – Andrew

答えて

1

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

それでも問題が解決しない場合は、ページへのリンクを教えてください。

1

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

1

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

echo '('.json_encode($output).')'; 
1

私は同じ問題を抱えているが、唯一のプリペアドステートメントでPDOを使用した場合。 JSONLintは出力を検証しますが、DataTableはそれを受け入れません。 PHPデータソースからJSONデータを取得するためにgetJSONを使用して独自の関数を作成しました。これは実際に動作します。 さらに、私はmysqliを使用している複製データソースを作成しました。ブラウザで出力を表示し、メモ帳++の2つの出力を比較すると、どちらも同じです。

0

私は正確に同じエラーを持っていたし、私のフォーマットはこれを使用して有効であったことを確認するバリデータを使用:http://jsonformatter.curiousconcept.com/

それは有効だった、それはちょうど私のPHPスクリプトが原因の他のデータを「エコー」されたことが判明私の愚かな間違い。

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

関連する問題