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をクリーンアップし、何らかのフィルターを設定してデータを入力します。幸運を。閉鎖!