2017-12-09 31 views
1

무엇이 원인인지 모르겠지만 nuxtjs를 사용하고 usernamepassword을 json 형식의 Go 서버에 보내려고합니다. 이것은 내 VUE 코드 :vuejs FormData가 json을 보내지 않습니다.

<template> 
<div class="container"> 
    <h1>Login</h1> 
    <div> 
    <label for="username" >Username</label> 
    <input class="input-block" type="text" v-model="username"> 
    </div> 
    <div> 
    <label for="password" >Password</label> 
    <input class="input-block" type="password" v-model="password"> 
    </div> 
    <div> 
    <button v-on:click="login">Login</button> 
    </div> 
</div> 
</template> 

<script> 
import Vue from 'vue' 
import VueResource from 'vue-resource' 
Vue.use(VueResource) 

var loginURL = 'http://localhost:5000/login' 

export default { 
    data() { 
    return { 
     username: [], 
     password: [] 
    } 
    }, 
    methods: { 
    login: function() { 
     NProgress.start() 
     var formData = new FormData() 
     formData.append('username', this.username) 
     formData.append('password', this.password) 
     this.$http.post(loginURL, formData, {emulateJSON: true}).then(response => { 
     console.log(response) 
     }, response => { 
     console.log(response) 
     }) 
    } 
    } 
} 
</script> 

나는 또한 {emulateJSON: true}을 제거하기 위해 시도했지만 결과는 동일합니다. 내가 이동 꽤 확신

body string: -----------------------------10632500131211292840295750524 
Content-Disposition: form-data; name="username" 

MYUSERNAME 
-----------------------------10632500131211292840295750524 
Content-Disposition: form-data; name="password" 

MYPASSWORD 
-----------------------------10632500131211292840295750524-- 

:

func LoginPOST(w http.ResponseWriter, r *http.Request) { 
    var loginForm struct { 
    Username string `json:"username"` 
    Password string `json:"password"` 
    } 
    body, err := ioutil.ReadAll(r.Body) 
    if err != nil { 
    // return 422 
    return 
    } 
    fmt.Println("body string:", string(body)) 
    err = json.Unmarshal(body, &loginForm) 
    if err != nil { 
    fmt.Println(err) 
    // return 422 
    return 
    } 
    ... 
} 

json.Unmarshal 오류가 인쇄됩니다 :

는 서버 이동 코드는 다음과 같습니다 invalid character '-' in numeric literal을하고 r.Body이기 때문이다 코드는 정확하지만 vue-resource이 FormData를 그런 방식으로 보내는 이유를 알 수 없습니다. 누군가가 요청 브라우저에서 regualr formdata 개체가 JSON 내가 아는 한 인코딩되지 않습니다

답변

2
NProgress.start() 
     var formData = { 
     username: this.username, 
     password: this.password 
     } 
     this.$http.post(loginURL, formData).then(response => { 
     console.log(response) 
     }, response => { 
     console.log(response) 
     }) 

에서 JSON과 아무것도를 전송하는 방법을 보여 수 있다면 감사하겠습니다. 그래서 json 객체를 정의하면 모든 것이 잘되어야합니다.

+0

이 덕분에 많은 도움이되었습니다. 나는 FormData가 기본적으로 json을 사용한다는 두 곳의 다른 곳을 보았다고 맹세했습니다. p – fisker

+0

당신을 도울 수있어서 기쁩니다. 나는이 상황을 아주 잘 알고있다.) –