1

ci-ajax-csrf-problemの解決策を確認した後、スクリプトに次の行を追加しましたが、正常に機能します。

var post_data = {
    '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>'
}

に挿入

$.ajax({
        url: '<?php echo base_url()."ajax/test";?>',
        type:'POST',
        dataType: 'json',
        data: post_data, 

みんな助けてくれてありがとう:)

私はAjax/Jqueryを初めて使用し、jorge torresのCodeIgniter用のAjaxのガイドに従って、自分のWebサイトに簡単なajax呼び出しを実装し、問題が発生しました。

Controller Ajaxを作成しました。これは、コードスニペットです。

class Ajax extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function test() {
        $output_string = 'This is a test';  
        echo json_encode($output_string);
    }

    public function test2(){
        $this->load->view('test.php');
    }
}

これはそのコントローラーのビューであり、URLヘルパー$ this-> load-> helper('url');を追加してロードしたことを除いて、チュートリアルのビューと同じです。最初の行

スクリプトコードのスニペットは次のとおりです。

#getdataはボタンタイプで、#result_tableはdivです

$('#getdata').click(function(){
$.ajax({
        url: '<?php echo base_url().'ajax/test';?>',
        type:'POST',
        dataType: 'json',
        success: function(output_string){
                $('#result_table').append(output_string);
            } // End of success function of ajax form
        }); // End of ajax call
});

localhost.com/codeigniter/ajax/test2に正常にアクセスできますが、ボタンをクリックしても何も起こりません。

ページのソース情報を見てみましたが、URLは正しいです

$.ajax({
        url: 'http://localhost/codeigniter/ajax/test',
        type:'POST'
        ....

localhost / codeigniter / ajax / testに直接アクセスすることも可能で、出力メッセージが表示されます。

CodeIgniter 2.1.3を使用していて、ローカルホストはXAMPP1.7.3で実行されています

前もって感謝します :)

4

5 に答える 5

4

ci-ajax-csrf-problemの解決策を確認した後、スクリプトに次の行を追加しましたが、正常に機能します。

var post_data = {
    '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>'
}

に挿入

$.ajax({
        url: '<?php echo base_url()."ajax/test";?>',
        type:'POST',
        dataType: 'json',
        data: post_data, 

みんな助けてくれてありがとう:)

于 2013-03-13T02:01:22.147 に答える
0

ajaxの呼び出しに問題があると思います。私が思うにこのようにする必要があります:

$(document).ready (function () { 
   $('#getdata').click(function(){
     $.ajax({
        url: '<?php echo base_url()."ajax/test";?>',
        type:'POST',
        dataType: 'json',
        success: function(output_string){
                $('#result_table').append(output_string);
            } // End of success function of ajax form
        }); // End of ajax call
    });
});

ファイヤーバグコンソールに、必要なアクションが許可されていないと表示された場合は、CSRFトークンの問題である可能性があります。これは、codeigniter構成でオフにしてください。

これを設定ファイルに追加します。

$config['csrf_protection'] = FALSE; 

お役に立てれば :)

于 2013-03-11T08:55:39.283 に答える
0

.click()イベントハンドラーは期待どおりに機能しましたか?

$('#getdata').click(function(){
 alert('clicked');
 ........

in $(document).ready(function() { ... });いいえの場合は、 @Sudhirが提案したようにjqueryコードをラップしてみてください。

$(document).ready( function() { 
      $('#getdata').click(function(){
      alert('clicked');
      ........

});

はいの場合、まだわからない場合は、AJAXリクエストをチェックするためのfirebugというツールがあります。AJAXのURLに問題はないと思います。これまでのところ、これが私の答えです。これもお役に立てば幸いです。

于 2013-03-11T09:06:38.807 に答える
0

config.phpで出力圧縮が有効になっていますか(gzip)?出力を圧縮すると、echoを使用して出力が失敗し、500サーバーエラーが返されます。

于 2013-03-11T09:11:01.753 に答える
0

やってみました

$(document).ready (function () { 
   $('#getdata').click(function(){
     $.ajax({
        url: '/ajax/test',
        type:'POST',
        dataType: 'json',
        success: function(output_string){
                $('#result_table').append(output_string);
            } // End of success function of ajax form
        }); // End of ajax call
    });
});

に並置されたように<?php base_url; ?>

サイトのURLをCI構成に入力しましたか?

于 2013-03-11T09:29:13.503 に答える