2017-10-17 12 views
0

J'ai un formulaire avec deux champs de saisie, du texte et un fichier. Je suis en mesure d'obtenir les données du formulaire. Mais ce que j'ai du mal à faire est de récupérer les données du formulaire sur le fichier que j'ai posté les données.Comment récupérer les données envoyées via xhr.send()?

Mon code est le suivant:

function addAnswer() { 
     // var currentUser = 2; 

      var formData = new FormData(); 


      //Get comments  
      var comments = document.getElementById("res_comm").value; 

      if (comments.length < 1) { 
       alert("Please input some commetns"); 
      } 

      //Get picture from form 
      var logo = document.getElementById('res_files'); 


       //Check if theres a comment 
       if (logo.files.length > 0) { 
        formData.append("res_files", logo.files[0]); 
        exit(); 
       } 


       formData.append("comments", comments); 
       formData.append("update_id", UpdateID); 

      console.log(...formData); 
      var xhr = new XMLHttpRequest(); 
      xhr.open('POST', './nonconfirmitys/savedata.json', true);  
      xhr.send(formData); 
    //location.reload(); 
} 

Répondre

0

Avant d'appeler envoyer, piège l'un des événements de xhr. onreadystatechange est compatible avec plusieurs navigateurs, mais nécessite plus de code. onload est probablement un bon candidat. Une fois qu'il est chargé, il y a beaucoup de propriétés de xhr pour voir ce qui revient du serveur.

Voir: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

0

OK, Après quelques recherches, j'ai réussi à résoudre le problème. le code est le suivant:

public function savedata() 
     { 
      $this->autoRender = false; 
      $this->response->type('json'); 
      $json = json_encode(array('message'=>'Input some stuff here!')); 
      $this->response->body($json);   
      //var_dump($this->request->data); 

       $comments = $_POST['comments']; 
       $id = $_POST['update_id']; 
       $currentUser = $this->Auth->user(); 
       $this->request->data['usr_id'] = $currentUser['User']['usr_id']; 

     if (!empty($_FILES)) { 

      $file = $_FILES['res_files']; 

      $rawFilename = explode('.', $file['name']); 
      $originalextention = $rawFilename[count($rawFilename)-1]; 
      $filename = md5('picture'.time()).'.'.$originalextention; 
      $newName = $filename; 
     } 
     else{ 
      $filename= ""; 
     } 
     if (empty($newName)) { 
       $this->set('errors', $this->jsonResponse('FAL', 'File not uploaded, Please try again')); 
       return $this->set('_serialize', 'errors'); 
     } 

     if (!empty($_FILES)) { 
       $file = $_FILES['res_files']; 
       $uploadDir = WWW_ROOT . DS . 'files' . DS; 
       move_uploaded_file($file['tmp_name'], $uploadDir.$filename); 
      } 


      $this->loadModel('Nonconfirmity'); 
      $this->Nonconfirmity->read(null, $id); 
      $this->Nonconfirmity->set('res_comments', $comments); 
      $this->Nonconfirmity->set('res_user_id', $this->request->data['usr_id']); 
      $this->Nonconfirmity->set('res_files', $filename); 
      $this->Nonconfirmity->set('res_date', date('Y-m-d H:i:s')); 
      $this->Nonconfirmity->set('res_status', "Solved"); 
      $this->Nonconfirmity->save(); 

      $this->Nonconfirmity->save(); 

}