当前位置 博文首页 > beego获取ajax数据的实例

    beego获取ajax数据的实例

    作者:Super_Ssssss 时间:2021-06-16 18:27

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

    以上这篇beego获取ajax数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持站长博客。

    js
下一篇:没有了