当使用带有返回 JSON 数据的 URL 源的 YUI3 自动完成小部件时,是否有一种简单的方法来检测 HTTP 错误响应?
示例:
Y.one('#ac-input').plug(Y.Plugin.AutoComplete, {
resultHighlighter : 'phraseMatch',
source : "http://example.com/api/item/search/?q={query}",
});
(例如,如果用户尚未在该服务器上进行身份验证,则自动完成小部件会收到 401 响应并静默失败,但会将错误记录到控制台。)
我已经搜索过,但没有找到专门针对此问题的文档 - 源代码挖掘也没有帮助。我认为我必须滚动自己的数据源对象,以便我可以发出请求并检测错误。
或者是否有更简单的方法将错误事件处理程序传递给此类数据源的 YUI3 自动完成小部件?
编辑:参见my follow-up answer使用 Y.on('io:failure')
获得简单的解决方案。
最佳答案
我认为Y.DataSource是传递错误处理程序的简单方法。您应该能够执行以下操作:
var ds = new Y.DataSource.IO({
source: 'http://example.com/api/item/search/'
});
ds.set('ioConfig', {
on: {
failure: function (transactionID, ioResponseObj, args) {
...
}
}
};
Y.one('#ac-input').plug(Y.Plugin.AutoComplete, {
requestTemplate: '?q={query}',
source: ds
});
这是通过查看 failureHandler 末尾的“apply”函数调用得出的。 .
当然请注意Same Origin policies申请。
关于autocomplete - 如何使用 YUI3 自动完成小部件处理远程数据源错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989139/