0

これがローカルホストでの私の問題です。次のように、検索パラメーターを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> &ndash; <span class="FirstName">' + item.FirstName + '</span> &ndash; <span class="LastName">' 
                    + item.LastName + '</span> &ndash; <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);
        }

    });

});
4

4 に答える 4

1

フォームを送信するのではなく、キーアップイベントが正しい場合(つまり、誰かが入力した場合)に結果を表示したいですか?

試す

$("input[name='search']").on('keyup', function(){

     var $this = $(this),
         results = $("#results"),
         timeout = '';

     // ------ delayed keyup event  ------//

     //reset initial timeout
     if(timeout)
     {
         window.clearTimeout(timeout);
         timeout = NULL;
     }
     // ------Timeout Listener ----- //
     timeout = window.setTimeout(function(){
        //send ajax request
        var searchTerm = $this.val();

     }, 1000);  // listens for when last key has been pressed after 1sec

});
于 2012-09-07T08:53:21.213 に答える
0

jQueryajaxSubmitはここであなたにとって便利かもしれません。 http://be.twixt.us/jquery/formSubmission.php

または$( "#formId")。ajaxSubmit({url:'xxx.php'、type:'post'})

または$( "#formId")。ajaxForm({url:'xxx.php'、type:'post'})

または、$。post('xxx.php'、$('#formId')。serialize())を使用できます

:$。postはjQuery ajaxの略記ですが、いくつかの違いがあります。

于 2012-09-07T08:46:11.767 に答える
0

ユーザーが何かを入力したときに結果を表示したい場合。通常のフォーム送信ではなく、ユーザーjqueryajaxフォーム送信。

ドキュメントのロードでもキーアップを使用します。

$(document).ready(function() {
var dataString = 'searchword='+ searchbox;
   $(".search").keyup(function() 
      $.ajax({
        type: "POST",
        url: "relative path to file", //this is the file which you normally use with action=""
        data: dataString,
        cache: false,
        success: function(data){
          "do whatever you want with data, example append or prepend data to any div";
        }
        });
      });
   });
});

クエリでlikeステートメントを使用して、インデックスファイルに結果を表示します

$q=$_POST['searchword'];

mysql_query("select * from table where fieldname like '%q%' order by fieldname LIMIT 5") or die(mysql_error());

この後、whileステートメントを使用して結果をフェッチします。

于 2012-09-07T09:07:16.053 に答える
0

キーを押したときにデータを取得したいので、ajaxまたはajax+jquery関数をonkeypressイベントに配置します。データを取得するには、jqueryの$ .post、$。ajax、$。getメソッドを使用するか、ミドルファイルからデータを取得する単純なajax関数を使用できます。

于 2012-09-07T12:32:40.533 に答える