beego接收ajax传递的json数据

烈酒焚心 提交于 2020-01-29 11:39:52

注意:
1、需在项目app.conf中添加以下设置,否则beego获取ajax的json数据为空;

copyrequestbody = true

2、js中定义传递的json数据时,键要与model中定于的结构体保持一致,否则获取的传递数据为空;

根据ajax中设定的json数据组,在beego中定义该结构体,例如:

#js代码
email = $('#email').val();
mobile = $('#mobile').val();
role = $('#role').val();
if (role == "") {
	bootbox.alert("请选择用户角色");
    return false; 
}
role1 = Number(role); #转换为int类型,因为在定义相关结构体时,定义的为Int类型
group = $('#group').val();
data = JSON.stringify({
        "email": email,
        "mobile": mobile,
        "groupname": group,
        "role": role1,
  });
 

modal定义例如:


type User struct {
	Id		int		`json:"id"`
	Name		string		`json:"name"`
	Password	string		`json:"password"`
	Role		int		`json:"role" orm:"default(3)"`
	Email		string		`json:"email"`
	GroupName	string		`json:"groupname"`
	Mobile		string		`json:"mobile"`
	Status		int64		`json:"status"`
	C_time		string		`json:"c_time"`
}

js中ajax配置:

$.ajax({
    url: '/user/edit',
    data: data,
    type: 'post',
    async: true,
    dataType: "json",
    headers: {
        "Content-Type": "application/json"
    },
    success: function (result) { #result为接收beego返回的json数据
    },
    error: function (result) {
    }
});

beego中获取json数据操作如下:

u := &models.User{}
json.Unmarshal(c.Ctx.Input.RequestBody, u)

beego返回json数据给ajax:

result := info  #info为自定义返回
c.Data["json"] = result
c.ServeJSON()
c.StopRun()

beego 可使用GetStrings方法获取数组类型数据,然后对获取的结果进行处理即可,例如

ips := make([]string, 0)
ip_lists := c.GetStrings("ips")
for _, ip_list := range ip_lists{
	 ips = strings.Split(ip_list, ",")
	 fmt.Println(ips)
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!