не может обновить страницу после успеха - PullRequest
0 голосов
/ 30 апреля 2019

Я поставил код обновления, если условие выполнено, но оно не запущено, я был заменен некоторым кодом, но все еще не запущено

это контроллер

if($result) {
$response = array(
                'success' => true,
                'message' => $this->localization->lang('success', array('name' => $this->localization->lang('task_tickets')))
            );
           $this->redirect->back();
        } else {
            $response = array(
                'success' => false,
                'message' => $this->localization->lang('error_update_message', array('name' => $this->localization->lang('task_tickets')))
            );
        }

и это представление индекса

 function reject(id) {
        $.ajax({
            url: '<?= $this->url_generator->current_url() ?>/reject/'+id,
            function(response) {
                    if (response.success) {
                        $.growl.notice({message: response.message});

                    } else {
                        $.growl.error({message: response.message});
                    }
                }
        })

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Вам нужно json_encode ваш $response и передать его браузеру.Вы не перенаправляете в php при использовании ajax.Это не сработает.

PHP:

    if ($result) {
        $response = array(
            'success' => true,
            'message' => $this->localization->lang('success', array('name' => $this->localization->lang('task_tickets'))),
            'redirect_url' => base_url() . '/some/url'
        );
        //$this->redirect->back();
    } else {
        $response = array(
            'success' => false,
            'message' => $this->localization->lang('error_update_message', array('name' => $this->localization->lang('task_tickets')))
        );
    }
    echo json_encode($response);
    exit;

JQUERY:

function reject(id) {
    $.ajax({
        type: 'get',
        url: '<?= $this->url_generator->current_url() ?>/reject/' + id,
        dataType: 'json',
        function(response) {
            if (response.success) {
                $.growl.notice({message: response.message}); // this message probably won't display due to redirect
                window.location.href = response.redirect_url; // redirect
            } else {
                $.growl.error({message: response.message});
            }
        }
    });
}

Обратите внимание: поскольку вы хотите перенаправить сообщение об успехе в jquery, вероятно, выиграно 'Показывает, или если он показывает, он будет отображаться только менее секунды или около того, в зависимости от того, насколько быстро работает интернет клиентов.Вместо этого я бы предложил добавить флэш-сообщение или запрос с сообщением, чтобы при нажатии пользователем кнопки «ОК» он был перенаправлен.

0 голосов
/ 30 апреля 2019

AJAX работает так, если вы используете функцию .ajax для запроса $_GET:

$.ajax({
  method:'GET',
  dataType:'json',
  url:'wherever_you_send.php?prop1=val1',
  success:function(phpJSON){
    console.log(phpJSON.returnProp);
  }
});

Теперь на wherever_you_send.php вы бы хотели:

<?php
if(isset($_GET['prop1'])){
  $results = []; 
  $results['returnProp'] = $_GET['prop1']; // add results like this
  echo json_encode($results);
}
?>

Кстати, единственная причина, по которой вы обычно используете AJAX, заключается в том, что вам не нужно обновлять страницу ... но, если вам нужно location.reload(true) в JavaScript. Удалите аргумент true, чтобы сохранить кеш.

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