これがローカルホストでの私の問題です。次のように、検索パラメーターをHomeControllerに渡します。
<form method="post" action="<?=site_url('home/index');?>">
これを行うと、ajaxメニューが正しく入力されます
----------
SEARCH:| mot |
----------------------------
| motorcyles ... |
| motorhomes ... |
| motorola .. |
-----------------------------
。
私のWebサーバーでは、フォームを送信する唯一の方法は<form method="post" action="<?site_url('home/index');?>">
、「=」を入力した場合、何も実行されないことです。使用する場合
<?php echo site_url('home/index');?>">
また、何も表示されません。
さらに、Webサーバーで検索用語を入力すると
----------
SEARCH:| mot |
---------
何も、エラーも、結果もありません。フォームを送信すると、送信を押した後にのみ正しい結果が返されます。
私のコントローラーはデータベースから正しい結果を取得しています。結果配列をエンコードする方法は次のとおりです。
if ( $this->input-> is_ajax_request())
{
$this->output->set_header("Cache-Control: no-cache, must-revalidate");
$this->output->set_header("Expires:Mon, 4 Apr 1994 04:44:44 GMT");
$this->output->set_header("Content-type:application/json");
echo json_encode($results);
exit();
}
else {
$data['results'] = $results;
}
私のjsファイルにエラーはありません。CSRFをオフにしました。なぜこうなった?
$(document).ready(function() {
var action= $('form').attr('action');
var results = $('#results');
function ajax_search(search) {
$.post(action, {
search: search
}, function(data) {
if(data.length) {
var el = $('<ul/>');
$.each(data,function(i,item){
$(el).append('<li><span class="Course_Name">' +
item.course_name_highlighted + '</span> – <span class="FirstName">' + item.FirstName + '</span> – <span class="LastName">'
+ item.LastName + '</span> – <span class="COURSE_ID">'+item.COURSE_ID +'\n</span></li>');
});
$(results).empty().append(el);
}
else{
$(results).empty();
}
}, 'json');
}
$('#search').keyup(function() {
var search = $(this).val().replace(/^\s+l\s+$/g, "");
if(search.length > 1)
{
clearTimeout($.data(this, 'timer'));
var wait = setTimeout(function()
{
ajax_search(search)
}, 400);
$.data(this,'timer', wait);
}
});
});