我正在使用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
是文本字段ID。
控制器:
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;
}
答案 0 :(得分:7)
我将在这里提供一般例子
视图文件中的
$.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));
}
答案 1 :(得分:3)
请勿使用返回将值返回给AJAX。使用echo
改变这个,
return $result;
到
echo $result;
答案 2 :(得分:0)
如果你希望你的方法返回一个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方法可以使用它来填充带有值和标签的下拉列表。
答案 3 :(得分:0)
这是我的结果:
在视图中
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));
}
感谢所有帮助过我的人。