2017-01-28 3 views
0

HMVC Moduler ExtensionでCodeigniterバージョン3.0.6を使用しています。 (MX)。私はAjaxは、このコードを実行した後、私にエラーマッサージ403codeigniterでajax呼び出しを行う方法HMVC

<script> 
var site = '<?=site_url()?>'; 
$('#item-name').keyup(function(){ 
    var d = $('#item-name').val(); 
    $('#item-list').css('display','block'); 
    $.post(site+"/moduleone/lists",{name: d}, function(data, status){ 
     $('#item-list').html(data); 
    }); 
}); 
</script> 

を示すそれを呼び出すようにしようとき、私はクロームコンソールで取得し、エラー:

Failed to load resource: the server responded with a status of 403 (Forbidden) 

モジュール方式:

public function lists() 
{ 
    echo 'afadfad'; 
    exit(); 
} 
+0

site_url()とは何ですか? –

+0

Codeigniter関数echo 'echo http:// localhost/admin/index.php' –

+0

あなたはそれをエコーし​​ましたか? CIベースのURLには "base_url()"メソッドを使用するため、 –

答えて

0

base_url()site_url()を使用するには、コード番号urlヘルパーを読み込む必要があります。

$this->load->helper('url'); 

またはあなたが

<script type="text/javascript"> 
    $(document).ready(function(){ 
    url = '<? echo base_url('moduleone/lists');?>'; 

    $('#item-name').on('keyup',function(){ 
     var d = $('#item-name').val(); 
     $('#item-list').css('display','block'); 

     $.ajax({ 
      type:'POST', 
      url:url, 
      data: {name: d}, 
      success:function(data, status){ 
      $('#item-list').html(data); 
      } 
     }); 
    }); 
    }); 
</script> 

とコントローラに...このようなあなたのajax電話をかけるapplication/config/autoload.php .Thenでそれを読み込むことができますが、あなたの名前は、AJAX呼び出しから送信されますし$this->input->post('name')を使用しています。このような。

public function lists() 
{ 
    $name = $this->input->post('name');// name sent from ajax 
    echo $name; 

} 
+0

私は既にオートローダーにヘルパーURLを追加しています。私はあなたの解決策を試みましたが、同じ問題がありました。 –

+0

hmvcのフォルダ構造をどのように管理しますか? –

+0

Codeigniterアプリケーション>モジュール> moduleone。フォルダmoduleoneには、controller、model、viewという3つのフォルダがあります。 –

0

問題が見つかりました。私はcodeigniter csrfを真にします。だからこそ私はフォームを提出するたびにcsrfトークンが必要です。しかし、ajax呼び出しでは、csrfトークンが見つからないため、認証エラーが表示されます。

$config['csrf_protection'] = TRUE; 
$config['csrf_token_name'] = 'csrf'; 
$config['csrf_cookie_name'] = 'csrf_cookie'; 
$config['csrf_expire'] = 7200; 
$config['csrf_regenerate'] = TRUE; 
$config['csrf_exclude_uris'] = array(
    'moduleone/lists' 
); 

オフにすると(csrf_protectionを偽)、それは完全に機能します。

詳細については、codeigniter user_guideを参照してください。

関連する問題