beego post请求获取request body参数
为了获取json类型的参数煞费苦心,差点不再爱了。
前端请求代码:
$.ajax({
url: "/user",
type: "post",
contentType: 'application/json',
data: JSON.stringify({username:"张三",mobile:"13265478965"}),
//这才是最重要的地方,必须用JSON.stringify序列化成字符串,
//直接使用对象死活都接收不到,至于大小写并不影响,只要写对了就行
dataType: "json"
}).done(function(res) {
if(res.result){
alert("成功")
}
});
需要传输json类型数据,同时数据需要使用JSON.stringify
序列化。
后端接收代码:
func (c *UserController) Post() {
var form struct {
Username string `json:"username"`
Mobile string `json:"mobile"`
}
c.BindJSON(&form)
user := &User{Username: form.UserName, Mobile: form.Mobile}
err := user.AddUser()//这是添加用户函数
if nil != err {
c.Data["json"] = map[string]interface{}{"result": false, "msg": err}
} else {
c.Data["json"] = map[string]interface{}{"result": true, "msg": "新增成功"}
}
c.ServeJSON()
}
可以使用beego提供的BindJSON
函数解析json数据。
特别注意: 如果数据类型不匹配也会造成空数据结果。
例如:前端参数是age: "23"
,model中age int
,也会获取不到数据。