Сообщение jquery, возвращающее отображенную HTML-страницу, а не результат SQL

Я использую codeigniter в своем приложении, и у меня есть функция jquery post, которая отлично работает.

$.post('getticketstacktype', {ticketnumber:ticketnumber},function(result) {
alert(result);
}

Затем я использую ту же функцию сообщения на другой странице редактирования. эта страница заполнена PHP и работает правильно.

Я использую тот же пост для вызова моего контроллера, я проверил, что значение тикет-номера правильное

$.post('getticketstacktype', {ticketnumber:ticketnumber},function(result) {
alert(result);
}

вызываемая им функция контроллера:

function getticketstacktype(){    
    if (isset($_POST['ticketnumber'])){
        $ticketnumber = $_POST['ticketnumber'];            
        $data = $this->wos_model->getticketstacktype($ticketnumber);
        $this->output->set_content_type('application/json')->set_output(json_encode($data));
        }
    }

Теперь, когда это работает правильно, результат равен '7', но вместо этого, на моей странице редактирования он возвращает всю визуализированную страницу моего представления: <html><head>......</html> hundereds of lines)

Я не могу понять, почему вся моя страница возвращается в результате в пост jquery, когда он работает в другом представлении.

Я также проверил, что информация о постах из обоих представлений одинакова с firebug.

Любой совет? Спасибо как всегда.

2 ответа

Обычно это происходит, когда в бэкэнде произошла фатальная ошибка. Когда в PHP возникает фатальная ошибка, он создает страницу для отображения некоторого сообщения об ошибке, содержащегося в блоке. JQuery пытается интерпретировать значимые данные, но это не удается. И если вы видите этот ответ в Firebug или инструменте Google Chrome Dev, вы действительно можете увидеть, что страница может быть отображена.

  1. Используйте инструмент Firebug или Google Chrome Dev, чтобы отследить результат, отправленный обратно с сервера.
  2. Убедитесь, что в вашей серверной части нет ошибок

Я думаю, что вам нужно это:

В своем заголовке определите в теге скрипта:

var base_url = '<?php echo base_url() ?>'; //here we keep the base url in a variable to use in our js files

Затем включите js file ниже строки выше, которая вызывает ваш ajax, поэтому мы можем получить доступ к указанной выше переменной.

Теперь ваш ajax function нужно изменить следующим образом:

$.post(base_url+'controller_name/getticketstacktype/', {ticketnumber:ticketnumber},function(result) { //here if you see the absolute path to the funciton is given
    alert(result);
}

Вы также должны проверить свой firebug's net panel а также console за любые ошибки, если вы получили. удачи.:D

Другие вопросы по тегам