axios formdata 不会将数据发布到服务器

时间:2021-04-09 06:40:36

标签: vue.js axios

我有这个 axios 代码用于发布表单数据

更新设置:function(){

    let formData = new FormData();
    formData.append('email', this.email);
    formData.append('country', this.country);
    formData.append('names', this.names);
    formData.append('language', this.language);
    formData.append('userid', this.$store.state.userid);
    formData.append('telephone', this.telephone);

    axios.post('https://example.com/users/update_profile',
        formData,
        {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
      }
    ).then(function(response){
      console.log(response.data);
    })
    .catch(function(){
      console.log('FAILURE!!');
    });

},

提交时,我正在执行该功能。在服务器端我有这个代码

public function update_profile(){
    header('Access-Control-Allow-Origin: *');

    header('Access-Control-Allow-Methods: GET, POST');

    header("Access-Control-Allow-Headers: X-Requested-With");
    header('Content-Type: application/json');
        
    
    $obj = json_decode(file_get_contents("php://input"), TRUE);
    
                    
    $currency = $obj['currency']; 
    $email = $obj['email']; 
    $country = $obj['country']; 
    $names = $obj['names']; 
    $language = $obj['language']; 
    $userid = $obj['userid']; 
    $telephone = $obj['telephone'; 

我的html

  <div class="form-group">
    <label for="exampleInputEmail1">Your Names</label>
    <input type="text" class="form-control" v-model="names" placeholder="Names">
    <small id="emailHelp" class="form-text text-muted"></small>
  </div>

当我返回 $obj 的值时,它返回一个空白,我不知道为什么我没有收到应有的发布的表单数据。如何在服务器端接收数据?我已经确认表单数据正在发布。

1 个答案:

答案 0 :(得分:1)

我看过几十篇文章和答案,指出这是正确的方法

$obj = json_decode(file_get_contents("php://input"), TRUE);

然后

 $obj['email'];

根本不起作用。

简单地说,$_POST['email']; 就可以了