Есть фильтры в виде чек боксов, они сериализуються и отправляються через GET метода yiiGridView.update на сервер, тот отдает результат с тегом div.keys title которого содержит URL, очевидно что URL с нашими параметрами которые получились в результате манипуляций с фильтром и последующей сериализации. Метод getUrl вызывает с div.keys для следующего ajax запроса, если ему явно не был указан другой url.
Теперь баг:
Код: Выделить всё
//...
if(options.data!==undefined && options.type=='GET') {
options.url = $.param.querystring(options.url, options.data);
options.data = {};
}
//...
Код: Выделить всё
options.url = $.param.querystring('http://some/path?foo[]=7', 'bar[]=8'); //http://some/path?foo[]=7'&bar[]=8' хотя в данных к запросу foo не было
Перед отправлением данных на сервер, получить URL (который еще не изменялся) и передать его явно.
Код: Выделить всё
var defaultUrl;
function filterChanged(event){
if(undefined == defaultUrl){
defaultUrl=$.fn.yiiGridView.getUrl('some-grid');
}
$.fn.yiiGridView.update('some-grid', {
url: defaultUrl,
data: $(event.target).parents('form').serialize()
});
}