500 Внутренняя ошибка сервера с использованием Ajax в Codeigniter 3

#php #ajax #codeigniter #post #http-status-code-500

#php #ajax #codeigniter #Публикация #http-status-code-500

Вопрос:

Я пытаюсь ОПУБЛИКОВАТЬ некоторые данные с помощью ajax, чтобы обновить только содержимое одного тега, используя эти данные, но при отладке я получил внутреннюю ошибку сервера 500.

Это мой код просмотра:

     <select id='combolocalidad' name="selectLocalidad" class="form-control">
        <option value="0">Seleccione una localidad:</option>
        <?php
            $i= 0;
            // Realizamos la consulta para extraer los datos
            foreach ($consultalocalidades->result_array() as $fila ):
                $i  ;
            // En esta sección estamos llenando el select con datos extraidos de una base de datos.
                        echo '<option value="'.$fila['id_localidad'].'">'.$fila['localidad'].'</option>';
        ?>
        <?php endforeach; ?>
    </select>
  

Это код ajax:

 $(document).ready(function(){
$('#combolocalidad').on( 'change', function(){ 
    let localidadValue = $('#combolocalidad').val();

    $.ajax({
        type: 'POST',
        url: 'InmueblesController/apiComboLocalidad',
        dataType: "json",
        data: { 
            localidadValue: localidadValue,
        },
        success: function(response){
            console.log(JSON.parse(response));
        }
    })
} );
  

});

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

 <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class InmueblesController extends CI_Controller {
    
    public function index()
    {
        $dato['consulta']=$this->InmueblesModel->consultar_inmuebles();
        $dato['consultalocalidades']=$this->InmueblesModel->consultar_localidades();
        $dato['consultabarrios']=$this->InmueblesModel->consultar_barrios();
        $this->load->view('head');
        $this->load->view('inmuebles', $dato);
        $this->load->view('footer');
    }

    public function apiComboLocalidad()
    {
        $localidadId = $this->input->post('localidadValue');
        //print_r($_POST);

        if(!empty($localidadId)){
            $dato['consultabarriosById'] = $this->InmueblesModel->consultar_barrios_byId($localidadId);

            $json = array();
            foreach ($consultalocalidades->result_array() as $row ){
                $json[] = array(
                    'id_barrio' => $row['id_barrio'],
                    'barrio' => $row['barrio']
                );
                $i  ;
            }
            echo json_encode($json);
        }
    }
}
  

Когда я пытаюсь напечатать запрос post

 $localidadId = $this->input->post('localidadValue');
  

Он пуст, поэтому условие контроллера никогда не выполняется.
И когда я меняю <select id=’combolocalidad’ ….> я получаю внутреннюю ошибку сервера.

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

 data: { localidadValue }
  

Я пытался использовать это, но это не работает:

 $localidadId = $this->input->post('localidadValue', true);
  

Или также:

 $localidadId = $this->input->post();
  

Я также пытался использовать полный URL-адрес, используя base_url(), но это не работает.

Пожалуйста, помогите мне!

Комментарии:

1. Включите сообщение об ошибках и укажите точную ошибку.

2. или проверьте журнал ошибок PHP.

3. Максимальное время, может быть сообщена внутренняя ошибка 500 из-за превышения максимального времени выполнения. Если вы работаете на localhost, то отредактируйте вас php.in и увеличьте время max_execution. Ваш код работает нормально и теперь имеет ошибку. Попробуй это.

4. По умолчанию CodeIgniter отображает все ошибки PHP. И время выполнения меньше, чем у других процессов, которые занимают больше времени и успешно решаются.

5. С другой стороны, я уже проверил, и действительно, у меня есть следующее в index.php файл: ini_set('display_errors',1); . Где я могу увидеть точную ошибку?

Ответ №1:

Ошибка в этом может быть вызвана ошибкой php на странице, которую вы вызываете. в вашем php.ini вы должны включить display_errors. вы можете увидеть ошибку в chrome dev tools> вкладка Сеть> найдите вызываемый процесс в списке.

Комментарии:

1. Большое вам спасибо! Я мог видеть ошибку PHP, где вы сказали, и это было легко исправить.

2. вы спасли весь мой проект @John …. : D

Ответ №2:

Попробуйте сделать это, удалив отдельные cotes localidadValue

 data: 
    { 
       localidadValue: localidadValue,
    }
  

Это может быть помощь

Ответ №3:

использование

 dataType: "json",
data: 
{ 
     localidadValue: localidadValue,
}