YUI チームから提供されたサンプル コードを少し変更して使用しています。ソースが JSON 以外の応答を返す (または単に JSON 構文エラーがある) 場合、ブラウザー (Safari) はスクリプト処理を中止し、問題があったことをユーザーに通知できません。
私は絶対に JS の第一人者ではないので、このコードは必要以上に醜いかもしれません。コードは、おおよそ次のとおりです。
YUI().use("dump", "node", "datasource-get", "datasource-jsonschema", function(Y) {
var myDataSource = new Y.DataSource.Get({
source:"/some/json/source/?"}),
myCallback = {
success: function(e){
myResponse = e.response;
doSomething(myDataSource);
},
failure: function(e){
Y.get("#errors").setContent("<li>Could not retrieve data: " + e.error.message + "</li>");
}
};
myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
resultListLocator: "blah.list",
resultFields: ["user", "nickname"]
}
});
myDataSource.sendRequest("foo=bar", myCallback);
}
「var myDataSource」ブロックを try/catch でラップしてみました。また、YUI().use() ブロック全体をラップしてみました。
構文エラーをキャッチすることは可能ですか? オールインワンの DataSource.Get 呼び出しを個別の IO 呼び出しと解析呼び出しに置き換える必要がありますか?