Intereting Posts
Проверить строку на плохие слова? как рандомизировать поиск вопроса из базы данных? получить последние подкасты из магазина itunes со ссылкой на RSS, JSON или что-то Кто-нибудь знает какую-либо услугу API расписания поездов? Как запретить прямой доступ к файлам в каталоге AJAX Переупорядочить XML-узлы с помощью php и simplexml Как я могу отправить ByteArray (из Flash) и некоторые данные формы в php? Могу ли я использовать WGET для создания сайта сайта с учетом его URL-адреса? как мне показать все .jpg картинки в папке, но я хочу только фотографии с сегодняшнего дня В PHP при отправке строк в базу данных следует позаботиться о незаконных символах с помощью htmlspecialchars () или использовать регулярное выражение? что является хорошим методом для дезинфекции всего массива $ _POST в php? Как рассчитать общие оценки для онлайн-экзаменационной системы в php Отправить переменную с одной страницы на другую в PHP PHP: как автозагрузочные интерфейсы и тезисы Предупреждение: implode () : Пропущенные недопустимые аргументы

Проблема с JQuery getJSON извлекает данные из контроллера (воспламенитель кода)

У меня проблема с кодом JQuery, Ajax и PHP. У меня есть страница, содержащая все сообщения от пользователя. Затем на этой странице я хочу загрузить последний комментарий для этого сообщения с помощью Ajax. Однако он ничего не обнаруживает.

Вот код PHP, где я назвал функцию JQuery:

<? foreach($post_query as $post_row){ ?> <li class="post_list"> <?php echo $post_row['text'];?> <br/> Latest Comment: <br/> <script type="text/javascript"> var post_id = $('#post_id_<?php echo $post_row['id'];?>').val(); document.write(post_id);//just to check that post_id value is not undefined $(function(){ $.getJSON("<?php echo base_url();?>postC/latest_comment", {post_id: post_id}, function(res){ $("#result").prepend(res.text); }); }); </script> <? } ?> 

И это мой PHP Code Igniter Controller, который обрабатывает запрос:

 class postC extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('models_facade'); $this->load->Database(); $this->load->helper('url'); $this->load->helper('form'); $this->load->library('tank_auth'); $this->load->library('user_session_lib'); error_reporting(E_ALL ^ (E_NOTICE | E_WARNING)); } function latest_comment(){ $post_id = $this->checkValues($_GET['post_id']); $latestcomment = $this->models_facade->getLatestCommentForPost($post_id); return json_encode($latestcomment); } } 

Я проверил, чтобы вызвать функцию вручную и отобразить последний комментарий без использования ajax, и это сработало. Таким образом, это означает, что нет ничего плохого в функции back end в модели, которая возвращает результат из mysql.
Я также пытался:

 echo json_encode($latestcomment); 

при попытке вызвать функцию вручную, и я мог видеть, что данные были в формате JSON.
Таким образом, это означает, что с вызовом ajax что-то не так, что он не получил данные от контроллера. Я использовал GET для .getJSON и POST для .post () и .ajax ().

Я пробовал все версии вызова jQuery Ajax: .getJSON (), .post () и .ajax (), и ни одна из них не работала. Я уверен, что соответствующие библиотеки JQuery загружены правильно, так как все мои другие функции ajax могут работать правильно.

Кто-нибудь знает, где могут быть ошибки? Я отлаживал это на один полный день и не получил никакого результата.
благодаря

Related of "Проблема с JQuery getJSON извлекает данные из контроллера (воспламенитель кода)"

Вот как я обрабатываю вызовы jQuery Codeigniter, и это работает для меня.

Попробуйте это для jQuery:

 $(function(){ $.post("<?php echo base_url();?>postC/latest_comment", {post_id: post_id}, function(data){ $("#result").prepend(data.html); },'json'); }); 

PHP:

 function latest_comment(){ $post_id = $this->checkValues($_GET['post_id']); $jsonData['html'] = $this->models_facade->getLatestCommentForPost($post_id); echo json_encode($jsonData); } 

Это позволит вам добавить больше в возвращаемый объект JSON. Один трюк, который мне нравится использовать, заключается в добавлении значения «failed» и «msg» в массив. Поэтому, если пользователь нуждается в уведомлении, я могу сказать пользователю, что он не работает, и, возможно, почему.

надеюсь, это поможет

// копье

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

JavaScript:

 $(function(){ $.getJSON("<?php echo base_url();?>postC/latest_comment/" + post_id, function(res){ $("#result").prepend(res.text); }); }); 

и в php-контроллере:

 function latest_comment($post_id) { $post_id = $this->checkValues($post_id); $latestcomment = $this->models_facade->getLatestCommentForPost($post_id); // Better practise to put json header header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); return json_encode($latestcomment); } 

Вот как я обрабатываю вызовы jQuery Codeigniter, и это работает для меня.

 $(function(){ $.post("<?php echo base_url();?>postC/latest_comment", {post_id: post_id}, function(data){ $("#result").prepend(data.html); },'json'); }); 

PHP:

 function latest_comment(){ $post_id = $this->checkValues(**$_GET['post_id']**); $jsonData['html'] = $this->models_facade->getLatestCommentForPost($post_id); echo json_encode($jsonData); } 

Это позволит вам добавить больше в возвращаемый объект JSON. Один трюк, который мне нравится использовать, заключается в добавлении значения «failed» и «msg» в массив. Поэтому, если пользователь нуждается в уведомлении, я могу сказать пользователю, что он не работает, и, возможно, почему.

надеюсь, это поможет

В этом ответе
$_POST['post_id'] отлично работает для моего случая вместо $_GET['post_id']

У моего друга-друга была симилярная ситуация. Вместо использования return encode json попытайтесь вывести результат. В основном вам нужен готовый json-файл данных и скрипт js, который анализирует его. В вашем случае результат просто плавающий и ожидающий, чтобы он был эхо-эхом в представлении. Надеюсь, поможет.