beego获取ajax数据

2017-12-19 08:20:53来源:CSDN作者:s_842499467人点击

分享

1. 什么是AJAX

  1. Asynchronous JavaScript And XML(异步 JavaScript 及 XML),是指一种创建交互式网页应用的网页开发技术
  2. Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

2. 如何使用 AJAX

XMLHttpRequest 是 AJAX 的基础。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

使用AJAX大致分四步

1. 创建XMLHttpRequest 对象

//js代码获取XMLHttpRequest 对象(保存为util.js)function getXmlHttpRequest() {    var xhr;    try {        // Firefox, Opera 8.0+, Safari        xhr = new XMLHttpRequest();    } catch (e) {        // Internet Explorer        try {            xhr = new ActiveXObject("Msxml2.XMLHTTP");        } catch (e) {            try {                xhr = new ActiveXObject("Microsoft.XMLHTTP");            } catch (e) {                alert("您的浏览器不支持AJAX!");                return false;            }        }    }    return xhr;}

2.注册状态回调函数(当XMLHttpRequest 对象的readyState每次发生变化时调用该回调函数)

//当xhr.readyState == 4时所有的步骤都已执行完毕//当xhr.state == 200时表示已经正确执行 xhr.onreadystatechange=function(){    if(xhr.readyState == 4 && xhr.state == 200){       alter("请求已全部执行,并且成功");    }}

3.建立与服务器的异步连接(默认为异步)

/**  open(method,url,async)方法  规定请求的类型、URL 以及是否异步处理请求。  method:请求的类型;GET 或 POST  url:相求处理请求的url  async:true(异步)或 false(同步)  通过time来保证,每次发送新的请求*/xhr.open("Post", "/detailsU?time=" + new Date().getTime());

4.发出异步请求

/**  send方法中发送json格式的字符串*/xhr.send('{"Index":"'+index +'", "Change":"' + i +'"}');

通过以上四步就可以成功的发送请求了

3. 在beego中处理AJAX的请求

1. 首先在models层的models.go中创建数据的结构

/**  要与传过来的json格式字符串对应  '{"Index":"'+index +'", "Change":"' + i +'"}'*/type Object struct {  Index string  Change string}

2. 注册相应的路由

/**  在main.go当中注册相应的路由(注意与对应路由设置好)  xhr.open("Post", "/detailsU?time=" + new Date().getTime());  "Post:DoUpdate"用来注册当Post方法请求该URL处理的函数*/beego.Router("/detailsU", &controllers.DetailController{}, "Post:DoUpdate")

3. 在controller中写好相应的处理函数

/**  在对应的函数中处理相应的请求  json.Unmarshal(this.Ctx.Input.RequestBody, ob)  通过json来解析穿过来的数据,并将数据存储在ob对象中  在app.conf中设置copyrequestbody = true*/func (this *DetailController) DoUpdate(){        ob := &models.Object{}        json.Unmarshal(this.Ctx.Input.RequestBody, ob)        db, err := sql.Open("mysql", "用户名:密码@tcp(IP:3306)/数据库名")        result, err := db.Exec("UPDATE 数据表名 SET 字段= ? WHERE id = ?",ob.Change, ob.Index)        if err != nil{            beego.Error(err)            return        }else{             fmt.Println(result)        }}

欢迎一起探讨,相互进步。QQ:3529601371

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台