当前位置: 首页 > 编程笔记 >

beego获取ajax数据的实例

孔安阳
2023-03-14
本文向大家介绍beego获取ajax数据的实例,包括了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来html" target="_blank">解析穿过来的数据,并将数据存储在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数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • Ajax 全称“Asynchronous JavaScript and XML”,译为“异步 JavaScript 和 XML”,程序员们习惯称之为“阿贾克斯”,通过 Ajax 我们可以异步在服务器与客户端之间传递数据。在 Ajax 中,普遍使用 JSON 作为传输数据的格式。 一般情况下,我们可以通过 JavaScript 来发送 Ajax 请求,并接收响应的信息。下面通过一个示例来演示一下(有

  • 本文向大家介绍jQuery中ajax获取数据赋值给页面的实例,包括了jQuery中ajax获取数据赋值给页面的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下所示: 以上这篇jQuery中ajax获取数据赋值给页面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我如何通过带有角的ajax获取json数据?我尝试了很多,但是我的代码无法正常工作。我的代码: 问题答案: 你这样尝试过吗?

  • 本文向大家介绍Ajax的jsonp方式跨域获取数据的简单实例,包括了Ajax的jsonp方式跨域获取数据的简单实例的使用技巧和注意事项,需要的朋友参考一下 jsonp的调用,今天碰到了,正好整理了一下。 以上这篇Ajax的jsonp方式跨域获取数据的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我的页面如下: 和一个php文件来处理ajax请求; 但是,当我单击时,我得到的不是array [0]。我怎样才能解决这个问题?? 提前致谢… 问题答案: 您不能从js访问数组(php数组)try 和js

  • 问题内容: 我正在基于CodeIgniter的应用程序。这里的代码: 控制器 : 型号 : 查看 : Javascript : 上面的代码运行良好。 现在,我想通过ajax请求将数据提取到。我已经从url创建了一个ajax请求,可以从这里,where 和进行说。 Ajax响应产生: 问题 如何使用Ajax数据源配置数据表,以及如何将数据显示到表中,所以我可以使用数据例如创建类似代码的链接 问题答案