【Go.Beego】学习笔记,表格传值以及Ajax传值注意点,处理beego请求参数为空的问题。

前沿:跟着ccmouse(imooc)的课程将go的基础知识学习完毕之后,开始想着做点东西,因为笔者从事的Java领域的后端开发。所以很容易的想着写个博客啊管理什么的。所以在比较了Gin和beego几个框架之后,选定beego先行练手。

基本上先是按照beego官方的文档过了一遍,因为最近升级了beegoV2,文档似乎还没有完全更新。尤其是在beego的mvc设计-controller-请求数据处理这一节,关于form提交与ajax提交,样例不是很全,然后文档呢,相对来说不是太细。

1.表单提交(这个怪我,没有看到注意就开始下手了,传递了id,tag就是没传递name)

表单传值样例

前端:

 <div>
        <form action="/manage" method="POST">
            <input id="Id" name="Id" type="text">
            <input id="Content" name="Content" type="text">
            <input type="submit">
        </form>
    </div>

后端:

要注意的是,一定要传值name,然后名称要和后端接收的实体类一致,如果直接解析到struct的话。(这里的this 就是 controller),可以直接使用GetString()或者 getxxxx()获取

    id := this.GetString("Id")

    content := this.GetString("Content")

    fmt.Println(id)

    fmt.Println(content)

Json传值样例:

前端:

<script>
    $("#sBtn").click(function (){
        console.log("button clicked!")
        $(function(){
        //请求参数
        var list = {"id":"1111"};
        //
        $.ajax({
            //请求方式
            type : "Post",
            //请求的媒体类型
            // contentType: "application/json; charset=utf-8", # 这样写无效
            dataType:"JSON",   # 要注意这样写
            //请求地址
            url : "http://localhost:8080/manage/",
            //数据,json字符串
            // data : JSON.stringify(list),
            data: {"Id":1111,"Content":"aaa"},  # 这里只是示意
            //请求成功
            success : function(result) {
                console.log("2222222222222222")
                console.log("-------"+this.data)
                console.log(result);
            },
            //请求失败,包含具体的错误信息
            error : function(e){
                console.log(e.status);
                console.log(e.responseText);
            }
        });
    });
    });
    

</script>

注意点:1.dataType一定要写,即dataType:"POST",这里简单的以ajax为例。

后端:

type MyData struct {
	Id      int
	Content string
}

func (this *ManageController) Post() {
	id := this.GetString("Id")
	content := this.GetString("Content")
	fmt.Println(id)
	fmt.Println(content)
	var data = new(MyData)
	err := this.ParseForm(&data)
	if err != nil {
		fmt.Println("参数为空!")
	}
	var data2 MyData
	json.Unmarshal(this.Ctx.Input.RequestBody, &data2)
	fmt.Println(data2)
	mystrct := new(MyData)
	mystrct.Id = 111
	mystrct.Content = "这是一个很寂寞的天下着有些伤心的雨"
	this.Data["json"] = &mystrct
	this.ServeJSON()
}

关于官方案例里边的models.Object() 我是没找到,然后目前不清楚这个models.Object()哪里来的。

猜你喜欢

转载自blog.csdn.net/qq_26834611/article/details/112462350