#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,
}