Php 如何在编码Json后获取和显示数据?

Php 如何在编码Json后获取和显示数据?,php,codeigniter,jquery,Php,Codeigniter,Jquery,我试图传递用户输入表单jquery/ajax,但在PHP端使用json_encode()方法时,我无法从服务器获取任何数据。在没有使用Json之前,一切都很正常。我有点困惑如何获取和显示数据结果。我必须把它解码回来吗 Jquery代码: $(document).ready(function() { $('#keyword').keyup(function(event) { event.preventDefault(); // Get input for

我试图传递用户输入表单jquery/ajax,但在PHP端使用json_encode()方法时,我无法从服务器获取任何数据。在没有使用Json之前,一切都很正常。我有点困惑如何获取和显示数据结果。我必须把它解码回来吗

Jquery代码:

$(document).ready(function() {

    $('#keyword').keyup(function(event) {
        event.preventDefault();

        // Get input form
        var keyword = $('#keyword').val();
        var path = "<?php echo site_url('controller/suggestion'); ?>";

            $.ajax({
                url: path,
                type: "POST",
                data: { search: keyword },
                success: function(data) {
                    console.log('>> Data: ', data);
                }
            });
        }
    }); 
HTML:

在我的控制器中:

public function suggestion() {
    // Get the keyword from Ajax request
    $keyword = strip_tags($this->input->post('search'));

    if (isset($keyword) && !empty($keyword)) {
        echo '>> Search Keyword: '. $keyword;
        $this->tabResults = json_encode($this->model->findKeyword($keyword, 5));

        //print_r($this->tabResults);
        $data['searchResults'] = $this->tabResults;
        $this->load->view('results', $data);
    }
}
    public static $tabResults = array();

public function __construct() {
    parent::__construct();

    $this->tabResults = self::$tabResults;
}
public function suggestion() {
    // Get the keyword from Ajax request
    $keyword = strip_tags($this->input->post('search'));

    if (isset($keyword) && !empty($keyword)) {
        echo '>> Search Keyword: '. $keyword;
        $this->tabResults = json_encode($this->film_model->findKeyword($keyword, 5));

        print_r($this->tabResults);
        $data['searchResults'] = $this->tabResults;
        $this->load->view('results', $data);
    }
}

如果希望返回json数据,则不需要加载视图。只需返回json编码的数据

if (isset($keyword) && ! empty($keyword))
{
    $this->tabResults = json_encode($this->model->findKeyword($keyword, 5));

    if ($this->input->is_ajax_request())
    {
        return print $this->tabResults;
    }

    $data['searchResults'] = $this->tabResults;
    $this->load->view('results', $data);
}

jquery
$\u ajax()
函数中有
dataType
属性。您必须将其设置为json

如果这样设置,结果将以对象的形式出现。因此,您必须访问like对象(即数据。[从服务器端发送的文本])

下面的url可能对您有所帮助

http://api.jquery.com/jQuery.ajax/

如果您对此仍有疑问,请告诉我..

JSON只是一种使用(J)ava(s)script(O)bject(N)otation将本机数据结构封装为普通字符串的方法。您的PHP数据结构将转换为JSON字符串,jquery将为您转换为与本机Javascript等效的结构。在HTML文件中将PHP数据结构($this->tabResults)转换为JSON字符串后,我如何调用它?那么我如何在jquery中调用$this->tabResults?成功:函数(数据){console.log('>>data',data.tabResults);}不起作用Firebug显示数据:未定义您的AJAX调用看起来不错。但您返回的是字符串,而不是对象。所以只需检查console.log('>>Data',Data);实际上我正在返回一个数组($this->tabResults)。调用console.log(“Data:,Data”)时,我没有得到任何回复;有点奇怪!我做错了什么?是的,但是当您将json_encode应用到数组时,它会转换为字符串。正如Sakthi所说,set dataType=json,服务器响应应该类似于
返回打印(json_encode((对象)数组('tabResults'=>this->model->findKeyword($keyword,5))
在这种情况下,您将获得
数据。tabResults
。总的来说,你所有的步骤看起来都很好。同意,很好。此外,服务器响应应该类似于
返回打印(json_encode((对象)数组('tabResults'=>this->model->findKeyword($keyword,5))在这种情况下,qpixo可以获取
数据。tabResults
。嘿,我找到了一种使用$this->output->set_output(json_encode(…)显示的方法;但当没有数据时,我想添加一条自定义错误消息。在Jquery中,我应该在哪里添加它?我很难弄明白这一点。就是这样,你可以像这样设置一个状态的json_编码(数组('status'=>0)),另一个状态的json_编码(数组('status'=>1)),你可以在js中检查它,并在js中添加自定义消息。。!
if (isset($keyword) && ! empty($keyword))
{
    $this->tabResults = json_encode($this->model->findKeyword($keyword, 5));

    if ($this->input->is_ajax_request())
    {
        return print $this->tabResults;
    }

    $data['searchResults'] = $this->tabResults;
    $this->load->view('results', $data);
}
http://api.jquery.com/jQuery.ajax/