从.post中检索数据

时间:2013-04-01 15:09:24

标签: php javascript jquery codeigniter .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是文本字段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;
}

4 个答案:

答案 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));
}

感谢所有帮助过我的人。