无法访问golang中的post request params

时间:2017-09-16 02:48:14

标签: javascript jquery go

我试图通过jquery ajax发送golang中的post params。也许我错过了一些明显的东西。这是我的代码片段

    

    $('form').submit(function(e) {
        e.preventDefault();
        var jsn = {
            vvv = $("#textinput").val();   
        };
        console.log(jsn);
        $.ajax({
            type: "POST",
            async : true,
        //enctype: 'multipart/form-data',
        url: "/homepage",
        data: jsn,
        processData: true,
        contentType: "application/json",
        cache: false,
    }).done(function(response){
        $("#resultdiv").html(response);
    });
});

这是我的golang代码:

 func MainConversion(w http.ResponseWriter, r *http.Request) {
     r.ParseForm()    
        text := r.FormValue("vvv")
        fmt.Fprint(w, string(text))
        return
    })

我试过f.formValue(),r.Form.get()。提前致谢

2 个答案:

答案 0 :(得分:3)

您已使用JSON正文发送了请求,但ParseForm上的*http.Request无法处理JSON。您需要读取请求的正文并将其解析为JSON,或者不要将您的正文作为JSON发送。

func MainConversion(w http.ResponseWriter, r *http.Request) {
    var body = make(map[string]string)
    if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
    text := body["vvv"]
    w.Write([]byte(text))
}

答案 1 :(得分:0)

您的JS代码段包含语法错误,因此我假设没有请求到达您的golang API。

var jsn = {
    vvv = $("#textinput").val();   
};

应该是:

var jsn = {
    vvv : $("#textinput").val()
};