Я знаю, что есть несколько вопросов, касающихся этого на SO, но никто не отвечает на мою конкретную проблему.codeigniter autocomplete с jQuery не работает ~ 500 (Внутренняя ошибка сервера)
Я пытался получить вход автозаполнения работает с this учебником
страница загружается правильно без ошибок, однако, когда я вставляю письмо я получаю ошибки в консоли разработчика: GET http://localhost/autocomplete/getResult/ 500 (Internal Server Error)
источник ошибка исходит от jquery-1.9.1.min.js:5
.
Есть ли настройки в Codeigniter, что должно быть изменено, чтобы попасть на работу или есть проблема синтаксиса с моим кодом:
контроллера
<?php
class Autocomplete extends CI_Controller
{
function __construct() {
parent::__construct();
$this->load->model('autocomplete_model');
}
function index()
{
$this->load->view('autocomplete');
}
function getResult($title)
{
var $result = $this->autocomplete_model->a_method('customerName',$title);
echo json_encode($result);
}
}
Посмотреть
<html>
<head>
<title>
test
</title>
<link href="<?php echo base_url() ?>application/css/ui-lightness/jquery-ui-1.8.custom.css" media="screen" type="text/stylesheet" rel="stylesheet">
</head>
<body>
<form>
<label for="search">Search</label>
<input type="text" id="search">
<input type="hidden" value="<?php base_url() ?>" id="hiddenurl">
<input type="submit" value="Search">
</form>
<?php echo base_url(); ?>
<script src="<?php echo base_url() ?>application/scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="<?php echo base_url() ?>application/scripts/jquery-ui-1.10.1.custom.min.js" type="text/javascript"></script>
<script src="<?php echo base_url() ?>application/scripts/autocomplete.js" type="text/javascript"></script>
</body>
</html>
Autocomplete.js
$(document).ready(function(){
$('#search').keypress(function(e){
if(e.which == 13)
{
e.preventDefault();
}
var searched=$('#search').val()
var fullurl= $('#hiddenurl').val() + 'autocomplete/getResult/' + searched
$.getJSON(fullurl,function(result){
var elements = [];
$.each(result,function(i,val){
elements.push(val.title)
})
$('#search').autocomplete({
source:elements
})
})
})
})
В учебнике используется jquery-1.6.2.min.js
и jquery-ui-1.8.16.custom.min.js
.
Я использую jquery-1.9.1.min.js
и jquery-ui-1.10.1.custom.min.js
. Я предполагаю, что это не проблема, так как это более поздние версии jquery.
Мой конфигурационный файл имеет следующие параметры, относящиеся к CSRF:
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
Любые советы оценили, что он что-то просто.
UPDATE
согласно помощи от @undefined, были сделаны следующие изменения в мой код:
контроллер
<?php
class Autocomplete extends CI_Controller
{
function __construct() {
parent::__construct();
$this->load->model('autocomplete_model');
}
function index()
{
$this->load->view('autocomplete');
}
function getResult($title)
{
var $result = $this->autocomplete_model->a_method('customerName',$title);
echo json_encode($result);
}
}
Модель
<?php
class autocomplete_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
function a_method() {
$query = $this->db->like('CustomerName',$title);
$query = $this->db->get('customers');
return $query->result();
}
}
View - без изменений
<html>
<head>
<title>
test
</title>
<link href="<?php echo base_url() ?>application/css/ui-lightness/jquery-ui-1.8.custom.css" media="screen" type="text/stylesheet" rel="stylesheet">
</head>
<body>
<form>
<label for="search">Search</label>
<input type="text" id="search">
<input type="hidden" value="<?php base_url() ?>" id="hiddenurl">
<input type="submit" value="Search">
</form>
<?php echo base_url(); ?>
<script src="<?php echo base_url() ?>application/scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="<?php echo base_url() ?>application/scripts/jquery-ui-1.10.1.custom.min.js" type="text/javascript"></script>
<script src="<?php echo base_url() ?>application/scripts/autocomplete.js" type="text/javascript"></script>
</body>
</html>
автозаполнения.JS - неизменные
$(document).ready(function(){
$('#search').keypress(function(e){
if(e.which == 13)
{
e.preventDefault();
}
var searched=$('#search').val()
var fullurl= $('#hiddenurl').val() + 'autocomplete/getResult/' + searched
$.getJSON(fullurl,function(result){
var elements = [];
$.each(result,function(i,val){
elements.push(val.title)
})
$('#search').autocomplete({
source:elements
})
})
})
})
Я думаю, что у меня это ужасно неправильно сейчас, но совет ценится как я на значительной кривой обучения :-)
Установили ли вы свой сервер, чтобы он работал без 'index.php'? – undefined
есть есть. Я также использую mssql, а не MySQL. Если это имеет значение. Благодарю. – Smudger