Я новичок в Backbone и получил ГЭТ работать с тестом конечной точки, например,Backbone POST JSON
var Attributes = Backbone.Collection.extend({
url: '//127.0.0.1:8080/blah'
});
var AttributeListView = Backbone.View.extend({
el: '.page',
render: function() {
var that = this;
var attributes = new Attributes();
attributes.fetch({
success: function (attributes) {
var template = _.template($('#attribute-list-template').html(), {attributes: attributes.models});
that.$el.html(template);
}
})
}
})
Однако реальная конечная точка требует POST с JSON полезной нагрузки, и я не могу получить синтаксис для работы , Я пробовал что-то вроде этого
var AttributeListView = Backbone.View.extend({
el: '.page',
render: function() {
var that = this;
var attributes = new Attributes();
attributes.fetch({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: '{ "searchtext": "abc" }',
success: function (attributes) {
var template = _.template($('#attribute-list-template').html(), {attributes: attributes.models});
that.$el.html(template);
}
})
}
})
@Rusty, URL-адрес работает нормально с или без http, теперь браузеры обрабатывают его правильно. После копания немного больше, похоже, что это проблема CORS. Я знаю, что конечная точка установить Access-Control-Allow-Origin: *, но только для запроса POST, и я не думаю, что запрос не будет установлен правильно, вот что я получил от Chrome отладки
Request URL:http://127.0.0.1:8080/blah
Request Headers CAUTION: Provisional headers are shown.
Accept:application/json, text/javascript, */*; q=0.01
Cache-Control:max-age=0
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:8000
Referer:http://localhost:8000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36
Form Dataview sourceview URL encoded
{ "searchtext": "abc" }:
С консольный журнал
XMLHttpRequest cannot load http://127.0.0.1:8080/blah. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.
Хм. Этот URL не выглядит правильным, похоже, что вы используете синтаксис относительного пути для полного пути. Попробуйте изменить 'url' на' http: //127.0.0.1: 8080/blah', иначе просто '/ blah', тот или другой. Но вы сказали, что он работает с запросом GET. Каковы результаты, которые вы получаете? Выполняется ли обратный вызов 'success'? Вы бросили «console.log» или «alert» в обратном вызове успеха, чтобы проверить, или журналы сервера говорят вам, что они не работают? – RustyToms
См. Обновленный вопрос для получения дополнительной информации – Bob