Запросите новую страницу с помощью ajax и откройте ее на новой странице - PullRequest
0 голосов
/ 02 июля 2011

У меня проблема с попыткой запросить новые страницы у CodeIgniter с помощью JQuery Ajax и открыть их на новой пустой странице

Ниже приведен пример сценария текущего кода, который работает ,

1.) Пользователь выбирает чек покупателя с помощью флажка

<input type='checkbox' class='customer_id' value='<?php echo $entry->customer_id;?>'>

2.) Javascript читает идентификатор клиента (ов), а затем отправляет эти данные в CodeIgniter. Как только возвращенные данные получены, запускается функция обратного вызова для отображения их цели div

var data;
var counter = 1;
$(.customer_id:checked).each(function(){
    data['customer_' + counter] = $(this).val();
})    
$.post('finance/getReceipt', data, function(){
    $('#some_target_div').html(data);
}

3.) CodeIgniter извлекает данные о клиентах из БД и генерирует страницу

function getReceipt(){
    $counter = 1;
    while ($this->input->post('customer_' + $counter)){
        $where['customer_id'] = $this->input->post('customer_' + $counter);
        $data += $this->getCustomerReciept($where);
    }
    $this->load->page('finance/receipt', $data);
}

Но теперь мне нужно преобразовать этот код, чтобы открыть новую пустую страницу с кнопкой печати

Цель этого заключается в том, что я хочу создать отформатированную квитанцию ​​и отобразить ее на новой пустой странице с кнопкой печати. Я знаю, что есть несколько плагинов, которые я могу напечатать div, но это запрос от моего клиента. Так что это не решение для меня.

Любое предложение или комментарий будет отличным. Спасибо заранее.

1 Ответ

2 голосов
/ 02 июля 2011

Я думаю, что самым простым способом было бы создать вспомогательное form для публикации ваших данных на новой странице вместо использования $.post Итак, это будет код:

var data;
var counter = 1;
$(.customer_id:checked).each(function(){
    data['customer_' + counter] = $(this).val();
});
$('<form action="finance/getReceipt" method="POST" target="_blank" style="display:none">' +
'<input type="hidden" name="data1" value="value-data1" />'
).appendTo("body").submit().remove();

Просто измените ваш data1 параметр на тот, который вы хотите, или добавьте больше, если хотите. И это все. Магия заключается в использовании цели _blank для формы.

Надеюсь, это поможет. Приветствия

PS: Другой способ - создать новое окно с window.open и назначить его содержимое с помощью javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...