2

最初の CodeIgniter プロジェクトを開始しましたが、コントローラーへの Ajax 呼び出しを行うのに多くの問題があります。コントローラーに単純な echo ステートメントを入れましたが、ブラウザーでコンソール エラーが発生します - POST http://localhost:8888/lotto/get_results/ 404 (Not Found). これにより、AJAX 呼び出しでコントローラーを適切に参照していないと思われます。以下は関連するコードです。

表示 - index.php

$(document).ready(function(){
    $('#notification').hide();
    retrieveValues();
});

$('.numDraws').change(function(){
    retrieveValues();
});

function retrieveValues() {
    if (!checkConnection()) {
        $('#notification').html("<span>No internet connection available</span>");
        $('#notification').slideDown(500, 'linear');
        return;
    } else {
        $('#notification').slideUp(500, 'linear');
        $('#loading').fadeIn(200);
        var numOfDraws = parseInt($('.numDraws').find('option:selected').val());
        if (isNaN(numOfDraws)) {
            numOfDraws = "ALL"; 
        }
        $.ajax({
            url: "/lotto/get_results/",
            type: "post",
            data: {numOfDraws:numOfDraws},
            success: function (data) {
                // var json = $.parseJSON(data);
                // setTimeout(function(){displayResults(json)} ,1200);
                alert(data);
            }
        }); 
    }

} 

コントローラー - lotto.php

<?php 

class Lotto extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('lotto_model');
    }

    public function index()
    {
        $data['title'] = "Home";

        $this->load->view('templates/header', $data);
        $this->load->view('lotto/index');
        $this->load->view('templates/footer');

    }

    public function get_results($numOfDraws) {
        //$data['results'] = $this->lotto_model->get_results(1);
        echo "Reached the controller";
    }
}
?>

また、構成ファイルには次のものがあります。

$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

何か助けていただければ幸いです-私はこれに多くの時間を費やしましたが、それを理解できないようです.

4

1 に答える 1

3

おそらく、メソッドがあなたが提供していない引数を期待しているため、エラーに直面しています(そして、ルーターは呼び出しを正しく機能させることができません). この2つのことを試してください:

1) 組み込み関数を使用して URL を作成します (問題を回避するため):

url: "<?php echo site_url('lotto/get_results');?>"

2) メソッドは GET 変数ではなく POST 変数を受け取るように見えるため、正しい方法で取得する必要があります。

public function get_results() {
        $numOfDraws = $this->input->post('numOfDraws');
        //do something with $numOfDraws here
        echo $numOfDraws; // just to check the value is being passed
    }

変数がHTTP GETリクエストからのものである場合、メソッドに引数を渡すことは機能しますが、これはあなたの場合ではありません。それがあなたの意図である場合は、代わりに、AJAX 呼び出しで「POST」タイプを削除し、AJAX URL を作成するときに値を指定する必要があります。みたいな

url: "<?php echo site_url('lotto/get_results');?>/"+numOfDraws;

この場合、メソッドはget_result($draws)、パラメーターを使用して

于 2013-01-05T12:51:46.033 に答える