1

PHPスクリプトへの呼び出しからjQuery.parseJSON()の応答を解析するために使用しています。jQuery.ajax()一部のサーバーを除いて、コードは機能します0000が、応答文字列の先頭に文字が挿入されjQuery.parseJSON()て失敗します。

それらの文字がどのように挿入されているのかわかりません。何かアイデアはありますか? 文字は、応答をエコーする前に PHP でエンコードされた文字列に含まれていません。

シナリオは次のとおりです。

PHP スクリプトは、次を使用して JSON 文字列を作成します。

$html = json_encode(myArrayOfValues);
echo $html

jQuery.ajax は、エンコードされた文字列を次の場所で受け取ります。

....success: function(html, textStatus){
        var response = jQuery.parseJSON(html);
....

問題を修正するために、挿入された文字を削除して変更する機能を追加しました。

var response = jQuery.parseJSON(html);

に:

var response = parseJSONResponse(html);

どこ:

function parseJSONResponse(html){

    var foundChar =  html.indexOf("{");

    if(foundChar > 0 ){
        html = html.substring(foundChar);
    }

    var response = jQuery.parseJSON(html);

    return response;
}

最終的には機能しますが、挿入された文字がどこから来ているのか、挿入されないようにする方法があるかどうかを知りたいです。

4

1 に答える 1

1

これは、文字エンコード関連の問題である可能性があります。\u0000 は NULL 文字です。これは単なる偶然かもしれませんが、調べる価値があるようです。

json の推奨文字エンコーディングは utf-8 だと思います。これを呼び出しページの先頭に追加して、問題が解決するかどうかを確認してください。

<meta charset="utf-8">

それが役立つことを願っています!

于 2012-05-25T13:38:54.943 に答える