Я пытаюсь передать пользовательскую форму ввода jquery / ajax, но я не смог получить никаких данных с сервера при использовании метода json_encode () на стороне PHP. До этого все работало нормально, без использования Json. Я немного запутался, как получить и отобразить результат данных. Должен ли я декодировать его обратно?
Код запроса:
$(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);
}
}