2

迅速な支援が必要です。問題を理解するのを手伝ってください。

codeigniterフレームワークにあるクライアントのプロジェクトがあります。私のクライアントは自分のサイトでオートコンプリートが必要です。私はそれを機能させるために最善を尽くしました。チュートリアルに従ってMVCを作成します。しかし、私のスクリプトは何も返しません

オートコンプリートに対する私の見解

    <link rel="stylesheet" href="<?php echo $this->config->item('view_path');?>autocomplete/ui.theme.css" type="text/   css" media="all" />
    <script src="<?php echo $this->config->item('view_path');?>autocomplete/1.4.3.jquery.min.js" type="text/javascript"></script>
    <script src="<?php echo $this->config->item('view_path');?>autocomplete/1.8.6.jquery-ui.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(this).ready( function() {
        $("#postcode").autocomplete({
            minLength: 1,
            source: 
            function(req, add){
                $.ajax({
                    url: "<?php echo base_url(); ?>home/lookup",
                    dataType: 'json',
                    type: 'POST',
                    data: req,
                    success:    
                    function(data){
                        if(data.response =="true"){
                            add(data.message);
                        }
                    },
                });
            },
        select: 
            function(event, ui) {
                $("#result").append(
                    "<li>"+ ui.item.value + "</li>"
                );                  
            },      
        });
    });
    </script>

私のオートコンプリートコントローラーは

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Autocomplete extends CI_Controller {

function index()
{
    $this->load->view('autocomplete');
}

function lookup(){
    // process posted form data (the requested items like province)
    $keyword = $this->input->post('term');
    $data['response'] = 'false'; //Set default response
    $query = $this->MAutocomplete->lookup($keyword); //Search DB
    if( ! empty($query) )
    {
        $data['response'] = 'true'; //Set response
        $data['message'] = array(); //Create array
        foreach( $query as $row )
        {
            $data['message'][] = array( 
                                    'id'=>$row->PC_POST_CODE,
                                    'value' => $row->PC_TOWN.' '.$row->PC_POST_CODE,
                                    ''
                                 );  //Add a row to array
        }
    }
    if('IS_AJAX')
    {
        echo json_encode($data); //echo json string if ajax request

    }
    else
    {
        $this->load->view('autocomplete/index',$data); //Load html view of search results
    }
}

}

/*ファイルの終わりautocomplete.php //場所:./ application / controllers / autocomplete.php * /

モデルも例で同じです。

火災バグのコンソールに表示されると、このメッセージが表示されますが、結果は表示されません。

  http://yaashinii.com/maxsurge/tyrechangr/index.php/home/lookup  200 OK    3.28s

サイトリンクはあなたが訪問できることです。

  http://yaashinii.com/maxsurge/tyrechangr/

また、単純なajax呼び出しのみを使用すると、同じ結果になることも確認します。そして、結果のみを表示するようにコントローラーメソッドを変更した場合でも、

   function lookup(){
     echo 'waheed'; exit;
   }

それでも同じ結果

 http://yaashinii.com/maxsurge/tyrechangr/index.php/home/lookup  200 OK 3.28s

なぜそれが起こったのか理解できなかった新しい種類の問題だと私を助けてください。

4

1 に答える 1

1

私は解決策を得ました。

私はこのアドレスにアクセスhttp://www.yaashinii.com/maxsurge/tyrechangr/していますが、codeigniterの構成ファイルでベースURLを定義しているhttp://yaashinii.com/maxsurge/tyrechangr/index.php/ため、クロスドメインになります。およびajaxはクロスドメインアクセスを許可しません。あなたは私がアクセスしているwwwのとベースURLなしでアクセスしているのを見ることができますwww

于 2013-01-05T06:26:43.393 に答える