【发布时间】:2011-11-04 04:21:07
【问题描述】:
我正在尝试从 jquery/ajax 传递用户输入,但在使用 json_encode() 方法 PHP 端时无法从服务器获取任何数据。在不使用 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);
}
});
}
});
PHP 控制器:
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);
}
}
HTML:
<div id="container">
<div id="header">
<div class="search">
<form id="myform" method="post" action="film_controller/test">
<input type="text" name="keywordsearch" id="keyword">
<input type="submit" name="search" value="Search">
</form>
<div id="suggestionResult"></div>
</div>
</div>
</div>
我正在尝试添加 dataType: "json" 并设置 data.searchResults;
我在 Firebug 控制台中遇到错误: "更新语法错误:200 "JSON.parse: 意外字符数据..."
$.ajax({
url: path,
type: "POST",
data: { search: keyword },
dataType: "json",
success: function(data) {
console.log('>> Data: ', data.searchResults);
},
error:function (xhr, textStatus, thrownError){
console.log(">> Update Error Status: ", xhr.status, "Error Thrown: ", thrownError);
}
});
在我的控制器中:
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 只是一种使用 (J)ava(S)cript (O)bject (N)otation 将原生数据结构封装成纯字符串的方法。您的 PHP 数据结构被转换为 JSON 字符串,jquery 将为您转换为原生 Javascript 等效结构。
-
PHP 数据结构 ($this->tabResults) 在 HTML 文件中转换为 Json 字符串后如何调用它?
标签: php codeigniter jquery