Сообщение 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, вы действительно можете увидеть, что страница может быть отображена.
- Используйте инструмент Firebug или Google Chrome Dev, чтобы отследить результат, отправленный обратно с сервера.
- Убедитесь, что в вашей серверной части нет ошибок
Я думаю, что вам нужно это:
В своем заголовке определите в теге скрипта:
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