2016-04-21 71 views
0

我有一個提交表單數據與文件到控制器的ajax,控制器將發送這個表單數據到我的api使用捲曲。我怎樣才能做到這一點?Ajax到捲曲表單提交

我不能直接提交表單到我的API,它必須通過我的控制器。 :(

我的AJAX

data = new FormData(); 
     data.append('file', $('#file')[0].files[0]); 
     data.append('title', title); 
     data.append('description', description); 
     data.append('module_id', module_id); 
     data.append('tags', tags); 
     data.append('groups', groups); 
     $.ajax({ 
      url: '/controller/upload', 
      data: data, 
      processData: false, 
      contentType: false, 
      type: 'POST', 
      success: function (data) { 
       window.location.reload(); 
      } 
     }); 

我的控制器功能

public function uploadAction(){ 
    $response = new \Phalcon\Http\Response(); 
    $response->setContentType('application/json', 'UTF-8'); 
    $response2 = "{}"; 
    if($this->request->getPost()){ 
     $version = $this->session->get("version"); 
     $data = $this->request->getPost('data'); 
     $response2 = $this->useCurl("api_link","POST",$data); 
    } 
    return $response->setContent($response2); 
} 
+2

哪裏是你的代碼? – Hassaan

+0

'$ this-> useCurl'做什麼? – Slytherin

回答

0

url: '/controller/upload'應該是url: '/controller/uploadAction',,因爲你調用內部controlleruploadAction方法

使用cURL:

function useCurl($api_link, $data){ 
      $ch = curl_init($api_link); 
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
      curl_setopt($ch, CURLOPT_POST, true); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

      $ret = curl_exec($ch); 
      curl_close($ch); 
      return $ret; 
} 

在你的Ajax success回調:

success: function (data) { 
      //do something with data from uploadAction method (e.g console.log) 
      console.log(data); 
     }