2017-09-16 20 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)) 
}