国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

beego獲取ajax數據的實例

2020-04-01 19:00:11
字體:
來源:轉載
供稿:網友

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數據的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连州市| 开平市| 天镇县| 志丹县| 鹿邑县| 延津县| 玛纳斯县| 贵州省| 武宁县| 比如县| 无锡市| 团风县| 新干县| 桃源县| 囊谦县| 平泉县| 万载县| 孟津县| 揭西县| 浮山县| 邯郸市| 宜章县| 小金县| 濉溪县| 海盐县| 谢通门县| 荥阳市| 达日县| 文水县| 阿勒泰市| 吉隆县| 肃宁县| 墨竹工卡县| 治多县| 广昌县| 三台县| 彭泽县| 龙南县| 岗巴县| 彩票| 镇江市|