2017-02-07 12 views
0

私はテキストボックスとファイルアップロードのフォームを持っています。ユーザーがボタンをクリックしたとき。 テキストボックス値およびファイルアップロード名がデータベースに保存され、ファイルがサーバーにアップロードされます。私はAJAXを使ってそれを経験したことはありません。だから、どんな助けも大歓迎です。これは私のAJAXあるCodeIgniter 3.0でAJAXを使ってファイルをアップロードするには?

<form enctype="multipart/form-data" accept-charset="utf-8" name="f_complaint" id="f_complaint"> 
    <input type="text" name="i_complaint" id="id_complaint" class="cl_complaint" /> 
    <input type="file" name="i_file" id="id_file" class="cl_file" /> 
    <input type="button" id="btn_upl" value="Save your complaint" class="btn btn-primary" /> 
</form> 

は、これが私のフォームです

<script src="<?php echo base_url('assets/inspinia/js/jquery-2.1.1.js'); ?>"></script> 
<script src="<?php echo base_url('assets/jquery-ui/jquery-ui.js'); ?>"></script>  
<script type="text/javascript"> 
$(document).ready(function() { 
    var url = "<?php print base_url(); ?>complaint/saveadd"; 
    $('#btn_upl').on('click', function() { 
     var formData = new FormData($(this).parent('form')[0]); 
     //alert(url); 

     $.ajax({ 
      url : url, 
      type  : 'POST', 
      data  : formData, 
      success : function (returndata) { 
       alert(returndata); 
      } 
     }); 
    }); 
}); 
</script> 

これは私のコントローラである:

public function saveadd() { 
    $config['upload_path']  = FCPATH."assets/uploads/"; 
    $config['max_size']   = '307200'; 
    $config['file_name']   = "FILE - ".$_FILES['i_file']['name'];; 
    $config['overwrite']  = TRUE; 
    $this->load->library('upload', $config); 
    $this->upload->initialize($config); 
    if (! $this->upload->do_upload('i_file')) { 
     //return false; 
     redirect('app/'); 
    } else { 
     redirect('complaint/add'); 
    } 
} 

コードで何が悪いのでしょうか?アラートでさえ発砲されません。プラグインを使用したくありません

+0

コンソールにエラーがありますか?私はそれがフルパスを必要としていると理解している限り、URLは有効ではない –

+0

@SergioAlenエラーはありません – Shota

+0

他のプロジェクトでも同じURLを使用しています(アップロードファイルもajaxも使用していません)、うまく動作しています – Shota

答えて

0

コードの何が問題なのですか?アラートでさえ発砲されません。

ここに何が間違っていますか。 1.あなたのアラートはAJAX成功時に呼び出されます。これは、ajaxコールが正常に完了したことを意味します。しかし、あなたのCIコントローラでは、AJAX呼び出しをリダイレクトしているので、AJAX呼び出しは決して完了せず、決して "success function(returndata):"ブロックに戻りません。

今、これを解決するには、以下のコードを置き換えてください。

//return false; 
    redirect('app/'); replace with, 
    echo "upload failed";exit; 

redirect('complaint/add'); replace with 
echo "upload finished";exit; 

この戻り値は "returndata" jsの変数に返されます。

+0

また、リンクを参照してください@sintakonteは、AJAXを使用して画像ファイルをアップロード/通過するコメントで共有しました。 – JoshulSharma

+0

ファイルがアップロードされておらず、警告が機能していません – Shota

+0

コントローラでデバッグしてください。エコー "テキスト"を置く;終了する;あなたの "saveadd"関数の最初の行で、ブラウザの開発者コンソールでAJAXリクエストを確認してください。 – JoshulSharma

0

ajaxとcodeigniterを使ったアップロードファイルの参考です。私はそれがajaxを使用してファイルをアップロードする最良の方法です。

https://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684 
関連する問題