我以前主要使用jQuery而且我是YUI的新手。我希望使用YUI 3中的IO或DataSource为每个Ajax请求设置自定义标头。我希望为每个请求自动插入标头。在jQuery中,我可以使用$ .ajaxPrefilter完成此操作,如下所示:
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
var value = 'blah';
if (value) {
jqXHR.setRequestHeader("My-Custom-Header", value);
}
});
我在YUI 3的在线文档中找到了这些页面,但我不是“得到它”。我怎么能做到这一点?
答案 0 :(得分:4)
查看io模块中的“标题”方法:API docs
我没有测试过,但你应该可以这样做:
YUI().use('io', function(Y) {
Y.io.header('X-My-Header', 'My Custom Value');
Y.io(/*...*/); // Should have the X-My-Header HTTP header
});
请注意,这仅适用于当前的YUI实例。因此,如果您有另一个YUI().use(/.../)
语句,则需要再次设置标题。
如果您需要跨实例提供标头,则应定义自己的包装Y.io功能的模块。查看this gist以了解其中包含的内容。
答案 1 :(得分:3)
老实说,我认为做“JQuery风格”并不是一个好主意。无论哪种方式,您都需要提供配置对象,因此更少的字符没有太大的区别。
但最糟糕的是,当其他人看到你的代码时,他就不知道额外的标题来自何处,他可能会浪费数小时的生命。
如果您仍想在某处使用默认标头,请按照以下方式执行Javascript:
Y.myDefaultIOCfg={"My-Custom-Header":value}
...
var cfg=Y.merge(Y.myDefaultIOCfg, {
method: 'GET',
data: 'foo=bar'
})
request = Y.io(uri, cfg)
这样你明确地说你正在使用一些对象作为配置对象的模式,并且可以在那里找到额外的头文件定义。
答案 2 :(得分:1)
我不太了解YUI语法,但试试这个:
YUI().use("io-base", function(Y) {
var cfg, request;
cfg = {
methos: 'GET',
data: 'foo=bar',
headers: {
'My-Custom-Header': value
}
}
request = Y.io(uri, cfg);
});