YUI 3 - установка глобальных заголовков запросов для Ajax - PullRequest
4 голосов
/ 06 июля 2011

Я в основном работал с jQuery раньше, и я новичок в YUI.Я хочу установить пользовательский заголовок для каждого Ajax-запроса, используя IO или DataSource в YUI 3. Я хочу, чтобы заголовок вставлялся автоматически для каждого запроса.В jQuery я мог бы сделать это с помощью $ .ajaxPrefilter следующим образом:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
    var value = 'blah';
    if (value) {
        jqXHR.setRequestHeader("My-Custom-Header", value);
    }
});

Я нашел эти страницы в онлайн-документации для YUI 3, но я просто "не понял".Как мне это сделать?

http://developer.yahoo.com/yui/3/examples/io/io-get.html

http://developer.yahoo.com/yui/3/api/io.html

Ответы [ 3 ]

4 голосов
/ 07 июля 2011

Проверьте метод "header" в модуле io: API документы

Я не проверял это, но вы должны быть в состоянии сделать что-то вроде этого:

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(/<em>...</em>/), вам нужно будет снова установить заголовок.

Если вам нужно предоставить заголовки между экземплярами, вам следует определить свой собственный модуль, который включает в себя функциональность Y.io. Проверьте эту суть , чтобы понять, что это влечет за собой.

3 голосов
/ 06 июля 2011

Честно говоря, я не думаю, что это хорошая идея сделать это в стиле JQuery.В любом случае вам нужно предоставить объект конфигурации, поэтому несколько символов не будут иметь большого значения.

Но хуже всего то, что когда кто-то еще увидит ваш код, он не будет знать, откуда берутся дополнительные заголовки, и он, вероятно, потратит часы своей жизни.

Если вы все еще хотитечтобы где-то иметь заголовки по умолчанию, сделайте это с помощью Javascript следующим образом:

Y.myDefaultIOCfg={"My-Custom-Header":value}
...
var cfg=Y.merge(Y.myDefaultIOCfg, {
    method: 'GET',
    data: 'foo=bar'
})
request = Y.io(uri, cfg)

Таким образом, вы прямо скажете, что используете какой-то объект в качестве шаблона для объекта конфигурации, и там можно найти дополнительное определение заголовка.

1 голос
/ 06 июля 2011

Я не очень хорошо знаю синтаксис 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...