Получить данные из.post
Я использую codeigniter, у меня была проблема с обработкой данных с использованием jQuery $.post
функция. Я хочу отправить значение, такое как subjectid
в функцию ajax_get_subject_credit и получить другое поле в той же таблице базы данных. Результат отображается в другом текстовом поле. Вот мой код
Посмотреть:
$.post('<?php echo site_url('academic/ajax_get_subject_credit'); ?>', {'subjectid':subjectid}, function(data){
$('#chours' + id).val(data); });
Это получает значение из выпадающего списка, и я хочу, чтобы текстовое поле автоматически заполнялось из выпадающего списка. #chours
идентификатор текстового поля
контроллер:
function ajax_get_subject_credit($result)
{
$this->db->select('subjectid, subjectcredit');
$query = $this->db->get('ref_subject');
$result = $query->result_array();
$query->free_result();
$subjectid = array();
foreach($result as $row)
{
$result = $result + array($row['subjectid'] => $row['subjectcredit']);
}
return $result;
}
Изменено в контроллере
Я также попытался использовать этот оператор в контроллере для прямого вызова поля, но все еще безуспешно:
function ajax_get_subject_credit($subjectid)
{
$this->db->select('subjectid, subjectcredit');
$this->db->where('subjectid',$subjectid);
$query = $this->db->get('ref_subject');
$credithour = $query->row()->subjectcredit;
$query->free_result();
echo $credithour;
}
4 ответа
Я собираюсь привести общий пример здесь
в файле просмотра
$.post('<?php echo site_url("test/test"); ?>', {'id':1}, function(response){
if(response.success)
{
alert(response.message);
} else
{
alert('Something went wrong!!');
}
}, 'json');
в контроллере Test.php
function test()
{
$id = $this->input->post('id');
//do additional stuff
$result = 'i am coming right out of controller!! ';
echo json_encode(array('success' => true, 'message' => $result));
}
Не используйте return для возврата значения в AJAX. использование echo
изменить это,
return $result;
в
echo $result;
Вот мой результат:
Ввиду:
function subjectid_change(id, subjectid){
//Set value
setValue(id, subjectid);
$.post('<?php echo site_url('academic/ajax_get_subject_credit'); ?>', {'subjectid':subjectid}, function(response){
if(response.success)
{
$('#chours' + id).val(response.value);
} else
{
alert('Something went wrong!!');
}
}, 'json'); }
И мой контроллер:
function ajax_get_subject_credit()
{
//Get Post Value
$subjectid = $this->input->post('subjectid');
//Select subjectid,subjectcredit FROM
$this->db->select('subjectid, subjectcredit');
//Where subjectid = 'subjectid'
$this->db->where('subjectid',$subjectid);
//Database name
$query = $this->db->get('ref_subject');
$credithour = $query->row()->subjectcredit;
$query->free_result();
$result = $credithour;
echo json_encode(array('success' => true, 'value' => $result));
}
Спасибо всем, кто помог мне.
Если вы хотите, чтобы ваш метод возвращал массив, который JavaScript может использовать для заполнения раскрывающегося списка, вы, вероятно, не хотите возвращать строку.
Попробуйте что-то вроде этого:
function ajax_get_subject_credit()
{
$query = $this->db->select('subjectid, subjectcredit')->get('ref_subject');
$result = $query->result();
$out = array();
foreach($result as $row) {
$out[$row->subjectid] = $row->subject_credit;
}
header('Content-Type: application/json');
echo json_encode($out);
}
Это вернет JSON-массив вашему виду, который ваш метод javascript может использовать для заполнения раскрывающегося списка значениями и метками.