2011-07-06 4 views
4

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

$.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

ответ

4

Проверьте «заголовок» метод в модуле ввода-вывода: 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, чтобы понять, что это влечет за собой.

+0

Ах! Это то, что я искал. Однако наиболее печально, что он не работает через экземпляры YUI. Мое приложение будет состоять из нескольких экземпляров YUI. –

+0

Обновлен ответ на работу через экземпляры YUI. –

+0

Awesome Nick. Выше и дальше того, что я ожидал. Благодаря! –

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); 
}); 
+0

Спасибо, Антон, но я уже делал то, что вы предлагали. Я надеялся, что заголовок будет автоматически вставлен без необходимости делать это каждый раз. Документы YUI просто не совсем понятны. Или, может быть, я немного плотный! :) –

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) 

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

+0

Согласен. Отсутствие структуры jQuery является одной из причин, по которой я решил использовать YUI для этого конкретного проекта. Этот метод не слишком громоздкий, и я смог легко заставить его работать. Кроме того, он имеет дополнительное преимущество, оставляя след для других разработчиков. –

Смежные вопросы