LINUX.ORG.RU

Backbone.js

 , , ,


0

1

Помогите советом, почему не отрабатвается метод success в render TaskList?

[code=javascript]
/*******************************************************************************
GET_DATA SECTION
*/
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
// options.url = 'http://backbonejs-beginner.herokuapp.com' + options.url;

var token;
options.xhrFields = {
withCredentials: true
};
token = $('meta[name=«csrf-token»]').attr('content');
if (token) {
return jqXHR.setRequestHeader('X-CSRF-Token', token);
}

options.url = "http://localhost:8000" + options.url;
console.log(options.url);
});
/********************************************************************************/


/*******************************************************************************
COLECTIONS SECTION
*/
var Tasks = Backbone.Collection.extend({
url: «/api/v1/test/?format=json»
});
/********************************************************************************/


/*******************************************************************************
VIEW SECTION
*/
var TasksList = Backbone.View.extend({

el: ".content",

render: function() {
var render_this = this;
var tasks = new Tasks();
tasks.fetch({
success: function() {
console.log(«success»);
render_this.$el.html(«<b>Item: » + tasks +«</b>»);
},
error: function() {
console.log(«error»);
}
});

}

});

var taskList = new TasksList();
/********************************************************************************/


/*******************************************************************************
ROUTER SECTION
*/
var Router = Backbone.Router.extend({

routes: {
"": «index»,
«edit/:id»: «edit»,
«delete/:id»: «delete»,
«new/»: «new»
},

index: function() {
console.log(«Hello, Index Page!»);
taskList.render();
}

});

var router = new Router();
/*******************************************************************************/


Backbone.history.start();

// EOF
[/code]

Данные я получаю в tasks (они есть), но success не отрабатывается. WTF, господа?


То, что приходит с сервера:

{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 3}, "objects": [{"description": "description", "id": 1, "kind": "bug", "priority": "maj", "resource_uri": "/api/v1/test/1/", "title": "Title"}, {"description": "descrrrrrrripttttiiiiiooooonnnnn", "id": 2, "kind": "enh", "priority": "tri", "resource_uri": "/api/v1/test/2/", "title": "Test"}, {"description": "you all", "id": 3, "kind": "prop", "priority": "cri", "resource_uri": "/api/v1/test/3/", "title": "Fuck"}]}
djnoob ()
Ответ на: комментарий от djnoob

Я так понимаю, Django требует, чтобы все PUT и POST запросы использовали csrf-token. Однако, какого хера: 1) Я не использую запросы POST и PUT (в данном случае, юзаю гет) 2) Как в каждый ajax-запрос к серверу юспользовать это пресловутый csrf token.

В офф. доку нашел следующий код:

function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    }
});

Всталяю его в ajaxPrefilter - нифига. Таже ошибка! WTF?!!!

djnoob ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.