0

DB からデータを返し、次のような json スタイルのテキストを作成する php スクリプトがあります。

{ "company" : [ { "value" : "siemens" }, { "value" : "cocacola" } ], "order" : [ { "value" : "John" }, { "value" : "Mary" } ], "mob" : [ { "value" : "123123123" },  { "value" : "123123123" } ] }

次のようにjqueryで解析します。

    $.ajax({
        type: "POST",
        url: dir + "get_data.php", // this on gets text you can se above
        success: function(html){
            try {
                var autocomplete = $.parseJSON(html);
            }
            catch(e) {
                alert('invalid json');
                $('#content').append(html)
            }
                    }
                   })

データベース構造やコードは何も変更されていませんが、しばらくしてから「無効なjson」が返されます。以前はすべて正常に機能していましたが、完全に機能していました。データはフィールドをオートコンプリートするためのものであるため、変更されたものはすべてユーザーからの新しいエントリにすぎません。私が最初に考えたのは、ユーザーが正しくフィルタリングされていない特別な記号、つまり引用符や中かっこを入力したということでした。http://json-validator.com/およびhttp://jsonlint.com/で確認しました-どちらも正しいjsonであると言っています。次のアイデアは、どういうわけかjsonファイルが解析するには大きすぎて、その一部を解析することです。ここで何が間違っているのか、何か考えはありますか?

解決:

一部のユーザーは、json 解析をいじっていたデータベース集計記号に入力しました。同様の問題がある場合-最初にDBをクリーンアップし、何らかのフィルターを設定してデータを入力します。幸運を。閉鎖!

4

1 に答える 1

0

ここでできることはいくつかあります。

  1. 最新バージョンの jQuery を使用していることを確認してください。

  2. jQuery の AJAX 関数でデータ型を指定すると、エラーを特定するのに役立ちます。次のコードを試してください。

    $.ajax({url: dir + "get_data.php", type: "json"})
        .done(function(data) {
            var autocomplete = data;
        })
        .fail(function(xhr, response, error) {
            alert('Request failed: ' + error);
            console.log('%o', xhr);
            $('#content').append(response);
        });
    

    jqXHRコンソールに記録されたオブジェクトとerrorからスローされたオブジェクトの間で$.ajax、JSON の解析が失敗した理由について、より具体的な情報を取得できる場合があります。

  3. 最後に、ドキュメントをjQuery.parseJSON()チェックして、改行とタブ文字に関する問題があなたに当てはまらないことを確認してください。

于 2013-09-17T18:14:41.837 に答える