0

AJAX を使用して、Code Igniter ビューから必要に応じてデータを処理するコントローラーにデータを送信しようとしています。JQuery プラグイン (Handsontable) を使用してデータを収集しています。ユーザーが「保存」ボタンを押すと、テーブルから必要なデータが抽出され、ajax 関数が実行されます。

$.ajax({
    url: "/survey/save",
    data: {"data": data},
    type: "POST",
});

$_POST でデータを収集する通常の .php ファイルに送信できますが、コントローラーでは送信できません。

public function save() {
    $data = $this->input->post('data');

    $myFile = "testFile.txt";
    $fh = fopen($myFile, 'w') or die("can't open file");    

    for ($i = 0, $size = count($data); $i < $size; ++$i) {
        fwrite($fh, $data[$i][0]."\t".$data[$i][1]."\t".$data[$i][2]."\n");
    }
    fclose($fh);
}

上記のコードは、私が実際にコントローラーに実行させたいものではありませんが、このコードを正常に実行できれば、私が望むことを実行できます。

ajax 関数の URL と何か関係があるような気がしますが、これらすべての言語に非常に慣れておらず、単純なものを見落としている可能性があります。他のコードを含める必要がある場合はお知らせください。

4

4 に答える 4

1

ajax urlURL の形式を変更する必要があります。たとえば、絶対パスにする必要があります。

あなたの見解では、ajaxは次のようになります

$.ajax({
        url:'<?php echo site_url('survey/save'); ?>',
        type: 'post',
        data:  "data="+data,
        beforeSend:function(){
                //before send code for e.g. put a loader
        },
        success:function(result){ 
            // success result code goes here
        },
        error:function(jqXHR, status, error){
            if(status!='error')
                alert(error);   
        }
    });

これでコントローラーでデータを取得できます

$data=$this->input->post('data');

たとえば、使用するときに相対パスを使用する必要があるもう1つのことfopen

//使用しました

$myFile = "testFile.txt";

//instead of that you have to use

$myFile="./YOUR_FOLDER_NAME/YOUR_FILE_NAME";

config.phpで設定できます

$config['base_url'] = '';
于 2013-07-18T05:40:28.590 に答える