반응형
매개 변수를 사용하여 Backbone.js 페치
설명서에 따라 다음과 같이했습니다 .
var collection = new Backbone.Collection.extend({
model: ItemModel,
url: '/Items'
})
collection.fetch({ data: { page: 1} });
URL은 다음과 같이 밝혀졌습니다. http://localhost:1273/Items?[object%20Object]
나는 무언가를 기대하고 있었다 http://localhost:1273/Items?page=1
그렇다면 fetch 메소드에서 매개 변수를 어떻게 전달합니까?
바꾸다:
collection.fetch({ data: { page: 1} });
에:
collection.fetch({ data: $.param({ page: 1}) });
따라서 너무 많이하지 않으면 {data: {page:1}}
객체를 다음과 같이 호출 합니다.options
Backbone.sync = function(method, model, options) {
var type = methodMap[method];
// Default JSON-request options.
var params = _.extend({
type: type,
dataType: 'json',
processData: false
}, options);
// Ensure that we have a URL.
if (!params.url) {
params.url = getUrl(model) || urlError();
}
// Ensure that we have the appropriate request data.
if (!params.data && model && (method == 'create' || method == 'update')) {
params.contentType = 'application/json';
params.data = JSON.stringify(model.toJSON());
}
// For older servers, emulate JSON by encoding the request into an HTML-form.
if (Backbone.emulateJSON) {
params.contentType = 'application/x-www-form-urlencoded';
params.processData = true;
params.data = params.data ? {model : params.data} : {};
}
// For older servers, emulate HTTP by mimicking the HTTP method with `_method`
// And an `X-HTTP-Method-Override` header.
if (Backbone.emulateHTTP) {
if (type === 'PUT' || type === 'DELETE') {
if (Backbone.emulateJSON) params.data._method = type;
params.type = 'POST';
params.beforeSend = function(xhr) {
xhr.setRequestHeader('X-HTTP-Method-Override', type);
};
}
}
// Make the request.
return $.ajax(params);
};
따라서 'data'를 jQuery.ajax로 보내면 params.data
URL에 무엇이든 추가하는 것이 가장 좋습니다 .
processData를 true로 설정할 수도 있습니다.
collection.fetch({
data: { page: 1 },
processData: true
});
Jquery는 데이터 객체를 매개 변수 문자열로 자동 처리합니다.
그러나 Backbone.sync 함수에서 Backbone은 POST, UPDATE에서 데이터를 처리하기 위해 다른 방법을 사용하기 때문에 processData를 끕니다.
백본 소스에서 :
if (params.type !== 'GET' && !Backbone.emulateJSON) {
params.processData = false;
}
티타늄 합금을 사용하는 경우의 다른 예 :
collection.fetch({
data: {
where : JSON.stringify({
page: 1
})
}
});
try {
// THIS for POST+JSON
options.contentType = 'application/json';
options.type = 'POST';
options.data = JSON.stringify(options.data);
// OR THIS for GET+URL-encoded
//options.data = $.param(_.clone(options.data));
console.log('.fetch options = ', options);
collection.fetch(options);
} catch (excp) {
alert(excp);
}
참고 URL : https://stackoverflow.com/questions/6659283/backbone-js-fetch-with-parameters
반응형
'IT story' 카테고리의 다른 글
C #에서 개체 속성을 통한 루프 (0) | 2020.06.09 |
---|---|
PHP $ _SERVER [ 'HTTP_HOST'] vs. $ _SERVER [ 'SERVER_NAME'], 매뉴얼 페이지를 올바르게 이해하고 있습니까? (0) | 2020.06.09 |
PostgreSQL에서 그룹화 된 LIMIT : 각 그룹의 첫 N 행을 표시합니까? (0) | 2020.06.09 |
스칼라 컬렉션을지도로 바꾸는 가장 좋은 방법은 무엇입니까? (0) | 2020.06.09 |
Python에서 문자열 목록에 동일한 문자열 추가 (0) | 2020.06.09 |