【问题标题】:Using ajax to grab information from database使用ajax从数据库中获取信息
【发布时间】:2012-02-26 14:05:07
【问题描述】:

我正在使用 codeigniter,并希望使用 ajax 获取一些用户信息。这是我拥有的,但它不起作用

在视图中我定义了一个变量:

<script type="text/javascript">
    var end_user = "<? echo $user_id; ?>";
</script>
<div id="tabs6"></div>

js文件:

function get_experience()
{
$.post(base_url + "index.php/home/get_experience", { user : end_user }, function(data) {
           if (data.status == 'ok')
           {
$("div#tabs6").html(data);
           }
        else
           { //nothing }
           }, "json");
}

            get_experience();

控制器:

public function get_experience()
    {
            $this->load->model('experience_model');
            $end_user = $this->input->post('user');

            $one_exp = $this->experience_model->one_exp($end_user);

            if ($one_exp->num_rows() > 0)
            {
                    $one_exp_html = '<ul>';
                    foreach($one_exp->result() as $exp)
                    {
                            $one_exp_html .= '<li>';
                            $one_exp_html .= $exp->experience;
                            $one_exp_html .= '</li>';
                    }
                    $one_exp_html .= '</ul>';
                    $result = array('status' => 'ok', 'content' => $one_exp_html);
                    return json_encode($result);
                    exit();
            }
            else
            {
                    $result = array('status' => 'ok', 'content' => 'nothing here');
                    return json_encode($result);
                    exit();
            }

    }

型号:

function one_exp($end_user)
    {
            $query_str = "SELECT experience FROM exp WHERE user_id = ?";
            $query = $this->db->query($query_str, $end_user);
    }

【问题讨论】:

  • 为什么你在控制器中使用 html 而不是将$one_exp 传递给视图?
  • 它不工作 - 有错误消息?
  • 没有错误信息。我尝试像这样$data['one_exp'] = $this-&gt;experience_model-&gt;one_exp($end_user); $this-&gt;load-&gt;view('one_view', $data); 传递$one_exp 但它返回消息:未定义变量:one_exp
  • 如果你只是print_r($this-&gt;experience_model-&gt;one_exp($end_user));会发生什么?
  • 这样做了$data['print'] = print_r($this-&gt;experience_model-&gt;one_exp($end_user)); $this-&gt;load-&gt;view('one_view', $data); 消息:未定义变量:打印文件名:views/one_view.php

标签: php mysql ajax codeigniter


【解决方案1】:

您需要将return $query 添加到您的one_exp 方法中。

编辑

您在视图中设置user_id,然后在您的javascript函数get_experience()中使用end_user

另外,由于它是json,您需要将 html 填充更改为

$("div#tabs6").html(data.content);

如需更多调试,请在回调中添加警报(在if (data.status == 'ok') 之前添加alert(data);

【讨论】:

  • 试过了......仍然没有。 $query_str = "SELECT experience FROM exp WHERE user_id = ?"; $query = $this-&gt;db-&gt;query($query_str, $end_user); return $query;
  • 我添加了警报,它的警报为空。在我看来,我有var end_user = "&lt;? echo $user_id; ?&gt;"; 所以一切都好。
  • 做更多的调试。验证 $end_user 是您在控制器中的 get_experience() 方法中所期望的。
  • 我搞定了。这是两个答案的组合。我需要回应结果。 Crinsane 的建议并在此处添加内容html(data.content);
【解决方案2】:

我认为你必须将结果回显出来,而不是返回它。

【讨论】:

  • echo json_encode($result);?试过了......但仍然不会显示任何东西
【解决方案3】:

我不确定,但是 js 中的 end_user 值出现问题。试试这个
查看文件:

<script type="text/javascript">
    var end_user = "<? echo $user_id; ?>";
    get_experience(end_user);
</script>
<div id="tabs6"></div>

js文件:

    function get_experience(foo)
    {
        $.post(base_url + "index.php/home/get_experience", { user : foo }, function(data) {
           if (data.status == 'ok')
           {
$("div#tabs6").html(data);
           }
        else
           { //nothing }
           }, "json");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多