2016-05-04 17 views
1

jqueryとcodeigniterフレームワークを使用してajaxリクエストを実行しようとしていますが、サーバーページにアクセスしようとするとアクセスが禁止されます。codeigniter forbiddenを使用したAjaxリクエスト

ここに私のjqueryのコードは次のとおりです。

$('#btHello').click(function() { 
    var name = $('#name').val(); 
     alert(name); 
     $.ajax({ 
      type:'POST', 
      data:'name='+ name, 
      url:'<?php echo base_url();?>index.php/AjaxTest/ajaxtest', 
      success: function(result, status){ 
       $('#result1').html(result); 
      }, 

      error: function (result, status, error) { 
       alert(error); 
      } 
     }); 
    }); 

エラーアラートはただの何物でも、 "禁断" を示していません。

問題は何ですか?

は、ここでのcontrolerです:

class AjaxTest extends CI_Controller { 

    public function index() { 
     $this->load->view('home/head'); 
     $this->load->view('home/nav'); 
     $this->load->view('test/ajaxTest'); 
     $this->load->view('home/foot'); 
    } 

    public function ajaxTest(){ 
     $name = $this->input->post('name'); 
     echo 'Hello '.$name; 
    } 
} 
+0

私はそれがPOSTメソッドを受け入れるかどうかは分かりますか? – iAmoric

+0

これは関連していると思います:http://stackoverflow.com/questions/32478355/ajax-csrf-403-forbidden-codeigniter –

+0

コントローラは見えますか? –

答えて

1

要求に

$this->security->get_csrf_token_name() : $this->security->get_csrf_hash() 

を送信します。あなたの問題を解決することを願っています。

$.ajax({ 
    url: "<?php echo site_url().'/admin/getNewLocations' ?>", 
    type: "POST", 
    data: { 
     func: 'getNewLocations', 
     '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>' 
    }, 
    success: function(data) { 
    } 
}); 
+0

csrfのチェックに失敗した場合、codeigniterは禁止されたことを警告します。 – wolfrevo

+0

ありがとうございます。それは問題を解決した – iAmoric

+0

ようこそ。 CIに関連することを教えてください。乾杯 –