0

私は通常、検索で答えを見つけますが、これは困惑し、関連する記事が見つかりません:/

PHP スクリプトへの AJAX 呼び出しを実行し、返された値 (JSON エンコードされたオブジェクト) を警告しているだけです。

問題は、スクリプトが「echo」ステートメントに到達するとすぐにフリーズすることです。エコーなしでテストしましたが、「Hello」などの値を使用してもテストしました (どちらも成功しました)。また、オンラインで見つけた JSON 文字列の例を使用して出力をテストしました。これは失敗しました。

私は今、JSON として構造化された文字列がこのエラーを引き起こすと信じています (jsonlint.com で両方の JSON スクリプトをテストしました)。

すべてのヘルプは大歓迎です!!!

Javascript コード:

function scan()
{
var script          = "../resources/ajax/fincenmanager/load_reports.php";
var params          = "";
var return_function = "load_wire";

document.getElementById("loading_screen").className = "show";

ajax(script, params, return_function);
}
function load_wire(text)
{
document.getElementById("loading_screen").className = "hidden";
alert(text);
}

PHP コード:

<?php
     require_once("../../config.php");
     require_once("../../library/FincenManager/fincenmanagerclass.php");

     header("Content-Type: application/json");

     $manager = new FincenManager("../../inputs/FincenManager/");

     $json = json_encode($manager);

     // Script Breaks After This Line.. 100% Sure :/
     echo $json;
 ?>
4

2 に答える 2

0

良い、

私は推論を検討していますが、この問題に遭遇した人を助けるにはこれで十分だと思います:

JSON 文字列の二重引用符 (オブジェクトのエンコード時に json_encode によって作成された二重引用符) が原因で、'echo' ステートメントが失敗していました。これを解決するために、次を使用して、エスケープされていないすべての二重引用符をエスケープされた二重引用符に置き換えました。

str_replace( " \" " , " \\\" " , json_encode($object) )

これは、json_encode がそれ自体で二重引用符をエスケープしない結果であると考えており、ajax リクエストから呼び出された外部スクリプトから「エコー」しようとしたときにのみ発生します。

みんなありがとう:D

于 2012-08-10T15:19:44.257 に答える
0

キャラクターだけでなく、もっと多くのことをエスケープする必要があり"ます(発見したように)。この場合の問題は、が文字列を終了し、"JSON が の後に文字を想定していない"ことです。,]}

この質問の答えは、文字のエスケープにさらに役立ちます:クリック

JSON のテスト用: JSONlint

于 2012-08-09T19:46:00.553 に答える