У меня есть экран поиска, где пользователь может настроить, какие данные извлекаются для отчета. Эти параметры передаются в таблицы данных, а затем отчет извлекается через ajax.
URL-адрес, используемый для загрузки ajax, может быть чем-то вроде report.php?batch=1&id=5
.
Что я хочу сделать, так это предоставить ссылку, которая позволит пользователю загрузить результаты отчета. Для этого я хочу отправить тот же запрос на сервер, но тогда я просто отправлю представление в CSV вместо HTML. Для этого я хочу добавить к URL-адресу дополнительную переменную, чтобы получилось что-то вроде report.php?batch=1&id=5&output=download
.
Я пробовал пару способов добавить эту переменную, но оба безуспешно. К вашему сведению, я присвоил конфигурацию данных переменной с именем fixTheHeader.
1) попробуйте установить значение с помощью fnServerParams. fixTheHeader.push({"output":"download"});
, а затем перезагрузите таблицу с помощью fixTheHeader.fnReloadAjax();
. Хотя это не вызвало никаких ошибок, переменная также не была добавлена к URL-адресу.
2) получить URL-адрес, установленный в качестве исходного URL-адреса ajax, используя
var source = $(fixTheHeader'.$classNameToAppend.').parents(".dataTables_wrapper").find("table:first").dataTable().fnSettings().oInit.sAjaxSource;
затем добавьте &output=download
к source
и перенаправьте окно. Проблема с этим подходом заключалась в том, что ?batch=1&id=5
больше не было частью URL-адреса.
Я не придирчив к тому, какой подход заставляет его работать, но есть ли способ в datatables получить переменные URL +, добавить дополнительную переменную, а затем повторно отправить на сервер без перезагрузки страницы? Я не хочу жестко кодировать этот URL-адрес с параметрами, поскольку я хотел бы, чтобы этот же код можно было использовать для нескольких отчетов. Я надеюсь, что в этом есть смысл.
Я использую текущую версию (1.9.4) таблиц данных (http://datatables.net/)