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