beego获取ajax数据的实例

栏目: 编程语言 · Go · 发布时间: 8年前

内容简介:下面小编就为大家分享一篇beego获取ajax数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1. 什么是AJAX

Asynchronous JavaScript And XML(异步 JavaScript 及 XML),是指一种创建交互式网页应用的网页开发技术

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 +'"}');

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

附源码:

{{range .PhoneDetails}}  
    <tr onclick="func1(this)">
      <th>{{.Id}}</th>
      <th>{{.Name}}</th>
      <th>{{.Price}}</th>
      <th>{{.Repertory}}</th>
      <th>
        <a href="">编辑
      </th>
      <script type="text/javascript" src="/static/js/util.js"></script>
      <script type="text/javascript">
        function func1(x) {
          var code = prompt("请输入调整的库存大小:");
          if(code != null && code != "") {
            var i = parseInt(code);
            if(isNaN(i)) {
              alert('输入错误');
            } else {
              var xhr = getXmlHttpRequest();
              xhr.onreadystatechange = function() {
                if(xhr.readyState == 4 && xhr.state == 200) {
                  alter("请求已全部执行,并且成功");
                }
              }
              var index = x.rowIndex;
              xhr.open("Post", "/detailsU?time=" + new Date().getTime());
              xhr.send('{"Index":"' + index + '", "Change":"' + i + '"}');
              alert('修改成功');
            }
          } else {
            alert('输入错误');
          }
        }
      </script>
    </tr>
    {{end}}

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)
    }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大数据经济

大数据经济

谢文 / 北京联合出版公司·后浪出版公司 / 2016-1 / 32.00元

中国互联网数朝元老、中国的“凯文·凯利”首度深度剖析大数据的大机会 大数据纳入中国国家行动方略,大数据产业起飞在即 陈彤、胡舒立、王巍鼎力推荐 ................... ※编辑推荐※ ★ 雅虎中国前总裁、中国互联网第一预言家——谢文,首部大数据力作。本书作者是中国互联网业第一代创业者,历任和讯网总裁、雅虎中国总裁、一起网CEO,亲身经历中国互联网发展全过......一起来看看 《大数据经济》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具