Я недавно переключился на закрытие Google для нового проекта. Я испытываю затруднения при добавлении маркера подлинности к заголовкам в вызове ajax. Как я иду об этом?
Мой отрывок Ajax (использующий goog.net. Класс XhrIo):
var initialHTMLContent = superField[i].getCleanContents();
var data = goog.Uri.QueryData.createFromMap(new goog.structs.Map({
body: initialHTMLContent
}));
goog.net.XhrIo.send('/blogs/create', function(e) {
var xhr = /** @type {goog.net.XhrIo} */ (e.target);
alert(xhr.getResponseXml());
}, 'POST', data.toString(), {
'Accept' : 'text/xml'
});
Используя направляющие в бэкенде.
ОБНОВЛЕНИЕ:
Журнал:
Processing BlogsController#create (for 127.0.0.1 at 2010-06-29 20:18:46) [PUT]
Parameters: {"authenticity_token"=>""}
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
Rendered rescues/_trace (272.4ms)
Rendered rescues/_request_and_response (1.2ms)
Rendering rescues/layout (unprocessable_entity)
Где-нибудь в rails view (файл.html.erb) вы можете установить js-переменную следующим образом:
window._token = '<%= form_authenticity_token %>';
А затем добавить ее в ваш вызов:
goog.net.XhrIo.send('/blogs/create?authenticity_token=' + window._token, function(e) {
var xhr = /** @type {goog.net.XhrIo} */ (e.target);
alert(xhr.getResponseXml());
}, 'POST', data.toString(), {
'Accept' : 'text/xml'
});