2017-02-10 21 views
0

ステータスを更新するシステムを作成しています。画像をアップロードする必要があるだけでなく、ajaxを使用してアップロードする際に表示する必要がありますが、データベースに私はここにAjaxのリターンコントローラから配列の値を取得してcodeigniterのajaxで表示する

で画像にアクセスすることはできませんが、コード

<div class="tab-pane fade" id="tabs-2"> 
    <?php echo form_open_multipart('',["id"=>"formupload","name"=>"formupload"]); ?> 
    <p class="formUnit"> <i class="active_pic"></i> 

    <input type="hidden" name="id" value="<?php echo $id; ?>">  
    <button class="uibutton" type="button" id="upload_pic" style="width: 230px; height: 150px;">Upload Picture</button><span id="status"></span> 
    <?php echo form_upload(["name"=>"imagefile","id"=>"upload_pic" ]); ?> 
    <ol class="controls clearfix"> 
    <?php echo form_submit(['name'=>'submit','value'=>'Submit',"class"=>"btn btn-primary"]); ?> 
    </ol> 
    </p> 
    <p id="files"></p> 
    <?php echo form_close(); ?> 
</div> 

は今

jQuery('#formupload').submit(function(e){ 

     e.preventDefault(); 
     var formData = new FormData(this); 
     var url= '<?php echo base_url("user/postData_image"); ?>'; 
     formData.value 

     jQuery.ajax({ 

      type: "POST", 
      url:url, 
      data: formData, 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function(data) 
      { 
       console.log(data); 
       $('#output_post').attr('src',data); 
     }, 
      error: function(data){ 
      //error function 
      } 
     });    
    }); 

をAJAXで今

をコントローラ
public function postData_image() 
    { 
     $config = [ 
        'upload_path' => './uploads/', 
        'allowed_types' => 'jpg|gif|png|jpeg', 
        'max_size'   => 10000000000000, 
        'max_width'   => 1024000000, 
        'max_height'   => 7680000000, 
       ]; 
       $this->load->library('upload', $config); 
       $this->upload->initialize($config); 
       $imagefile="imagefile"; 
     if(!$this->upload->do_upload($imagefile)) 
     { 
      $upload_error = $this->upload->display_errors(); 
      $this->load->view('dashboard/profile',compact('upload_error')); 
     } 
     else 
     { 
      $post = $this->input->post(); 
      //print_r($post); 
      unset($post['submit']); 
      $upload_data = $this->upload->data(); 
      $file_name=$_FILES['imagefile']; 
      $this->load->model('Pmodel'); 
      $post_data=$this->Pmodel->post_data_image($post,$file_name); 
      $post['data']=$post_data; 

      echo $image_path= base_url("uploads/".$upload_data['raw_name'].$upload_data['file_ext']); 
      return $post; 

     } 

    } 

model 

public function post_data_image($arr,$arra) 
{ 

    $id=$arr['id']; 
    $image=$arra['name']; 

$data=array('image'=>$image); 


    $query=$this->db->insert('post_status',['user_id'=>$id,'image'=>$image]); 
    return $query; 
} 

が、AJAX

答えて

0

Thanx to @Callombert私は私が値を返すことを望んでいたために答えを得ました。 'echo json_encode(' $ image_path)または$ postはjson形式の値を返します。表示を

答えを探している他の人のためだけに、echo json_encode($ image_path);を追加してください。あなたのAJAX機能を追加するために

データ型: 'JSON'

これはあなたが働いて得るでしょう。

1

jqueryのは、それを解釈できるようにするには、出力にJSONとしてあなたのポストをしたいを使用して、データベースへの挿入後に生成された値を返す方法。あなたのAJAX機能を追加するために

echo json_encode($post); 

dataType: 'json' 

そしてデータは、使用できる配列になります。

+0

もし私がecho {{id}: "1"、 "data":true} –

+0

でこれを示しているのですが、foreachを使って私のビューにそのデータにアクセスするにはどうすればいいですか? –

+0

@HimanshuGoyal [jqueryでループjson配列](http://stackoverflow.com/questions/20772417/how-to-loop-through-json-array-in-jquery) – ourmandave

関連する問題