Intereting Posts
Удалите поле проверки, если товары корзины относятся к определенным категориям товаров Таблица стилей не загружается после использования RewriteRule и включает Как получить facebook нравится, делиться, комментарии подсчитываются из статьи Изменение цены товара на основе данных пользовательской корзины в WooCommerce Заменить строку в текстовом файле с помощью PHP Коррумпированное вложение электронной почты PDF при сгенерированном FPDF и PHP Буфер вывода показывает «1» Почему cURL всегда возвращает код состояния? Как лучше всего, внутри контроллера, знать, является ли запрос XMLHTTP одним или нет (ZF) PHP, ключи слияния в многомерном массиве Как проверить, существует ли файл из URL-адреса Потеря значений радио в полях клонированной формы jQuery Как прочитать строку запроса в PHP и HTML? Отключить клавишу ввода в форме с jquery-powered Обертывание 3 объектов или менее внутри / в foreach в PHP

CodeIgniter + jQuery UI autocomplete = 500 внутренних ошибок сервера (с кодом)

Вот код вида:

<html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <!-- Load JQuery UI --> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> <script type="text/javascript"> $( function() { $("#input").autocomplete({ source: function(req, add){ $.ajax({ url: '<?php echo base_url(); ?>test/ac2', dataType: 'json', type: 'POST', //data: req, data: 'input='+req, success: function(data){ if(data.response =='true'){ add(data.message); } } }); }, minLength: 2, select: function(event, ui){ $(this).end().val(ui.item.value); } }); }); </script> </head> <?php echo form_open(); echo form_input('input', '', 'id="input"'); echo form_close(); ?> </html> 

и код контроллера:

 class Test extends CI_Controller { function index() { $this->load->view('vw/test_vw'); } public function ac2() { //$search = $this->input->post('term'); $search = $this->input->post('input'); $data['response'] = 'false'; $this->db->select('*'); $this->db->from('loc_exercise'); $this->db->like('locations', $search); $locations = $this->db->get()->result(); if (count($locations) > 0) { $data['message'] = array(); foreach ($locations as $location) { $data['message'][] = array( 'label' => $location->locations, 'item' => $location->locations, 'value' => $location->locations ); } $data['response'] = 'true'; } echo json_encode($data); } 

Когда я ввожу что-либо в окно ввода, я получаю это на консоли:

 POST http://my.example.com/test/ac2 500 (Internal Server Error) 

и в журналах ошибок CI, похоже, нет проблем (log_threshold равен 1, / logs – chmod 777).

BTW У меня есть мой config.php с query_strings TRUE и allow_get_array TRUE.

Любые идеи, как решить эту проблему?

Solutions Collecting From Web of "CodeIgniter + jQuery UI autocomplete = 500 внутренних ошибок сервера (с кодом)"

Это почти наверняка проблема CSRF.

Смотрите это на форумах CI и этом сообщении в блоге

Ничто в вашем вопросе не предполагает, что вам нужно включить query_strings или allow_get_array

Попробуй это

прокомментируйте эту строку

 $search = $this->input->post('term'); 

затем добавьте $search к своей функции в качестве первого аргумента

 public function ac2($search) 

Затем попробуйте нажать URL с браузером

http://yourdomain.com/index.php/test/ac2/<insert your search string here>

Теперь, когда мы знаем, что ваш URL-адрес хорош

измените свой контроллер обратно.

попробуй это…

 data: 'term='+req, //<-- change to this 

кажется, что вам не хватает sendgr токен csrf с данными POST, попробуйте:

  $("#input").autocomplete({ source: function(req, add){ var cct = $("input[name=ci_csrf_token]").val(); // <--- $.ajax({ url: '<?php echo base_url(); ?>test/ac2', dataType: 'json', type: 'POST', //data: req, data: 'input='+req, 'ci_csrf_token': cct, // <--- success: function(data){ if(data.response =='true'){ add(data.message); } } }); }, minLength: 2, select: function(event, ui){ $(this).end().val(ui.item.value); } }); }); 

вы также можете найти маркер как:

  csrf_test_name:$("input[name=csrf_test_name]").val(), 

этот токен генерируется в представлении при использовании хелпера формы и его открытия:

  <?php echo form_open();?> 

источники: * http://codeigniter.com/forums/viewthread/176318/ ** собственная головная боль

Проверьте свой код PHP без AJAX. Ваша ошибка указывает на то, что ваш PHP является тем, который вызывает ошибку.

Еще одна вещь – лучше видеть, есть ли у вас результаты перед вызовом ->result()