[英]How to access HTTP response headers in select2
@fynn的答案不再适用于Select2 4.x,这是一个示例。
它检查X-Page
(当前页号,例如“ 1”)和X-Total-Pages
(例如“ 5”)标题。 如果不存在,它还会通过rel=next
检查Link
标头,如https://developer.github.com/v3/#pagination
$(".js-data-example-ajax").select2({
ajax: {
url: '/path/to/index.json',
dataType: 'json',
delay: 250,
data: function (params) {
// Returns the query params that should be passed to the server
return {
q: params.term, // search term
page: params.page
};
},
transport: function(params, success, failure) {
// Custom transport lets us get pagination info stored in the headers.
// Check for X-Page and X-Total-Pages, and alternatively for Link rel=next
var read_headers = function(data, textStatus, jqXHR) {
var more;
var current_page = parseInt(jqXHR.getResponseHeader('X-Page')) || 0;
var total_pages = parseInt(jqXHR.getResponseHeader('X-Total-Pages')) || 0;
var link = jqXHR.getResponseHeader('Link') || '';
if ((current_page < total_pages) || (link.search(/<([^>]+)>;\s*rel\s*=\s*['"]?next['"]?\s*(,|$)/i) > -1)) {
more = true;
}
else {
more = false;
}
return {
results: data,
pagination: {
more: more
}
};
};
var $request = $.ajax(params);
$request.then(read_headers).then(success);
$request.fail(failure);
},
cache: true
}
});
我只是通过提供自定义传输功能解决了该问题:
transport: function(params) {
var callback = params.success;
params.success = function(data, textStatus, jqXHR) {
callback({
items: data,
total: jqXHR.getResponseHeader('HeaderName')
}, textStatus, jqXHR);
};
return $.ajax(params);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.