2017-09-16 24 views
-1

我想要访问通过jquery ajax发送的golang中的post params。也许我错过了一些明显的东西。这里是我的代码片段无法访问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( )。在此先感谢

回答

0

您的JS片段包含语法错误,所以我假设没有请求到达您的golang API。

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

应该是:

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

是的,但即使更新它仍然没有达到golang。我无法弄清楚我正在做的错误 –

2

您已将您的请求,以此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)) 
}