濮阳杆衣贸易有限公司

主頁 > 知識庫 > beego獲取ajax數(shù)據(jù)的實例

beego獲取ajax數(shù)據(jù)的實例

熱門標簽:浙江高頻外呼系統(tǒng)多少錢一個月 釘釘有地圖標注功能嗎 黃岡人工智能電銷機器人哪個好 汕頭小型外呼系統(tǒng) 濱州自動電銷機器人排名 惠州電銷防封電話卡 建造者2地圖標注 阿里云ai電話機器人 鄭州亮點科技用的什么外呼系統(tǒng)

1. 什么是AJAX

Asynchronous JavaScript And XML(異步 JavaScript 及 XML),是指一種創(chuàng)建交互式網(wǎng)頁應用的網(wǎng)頁開發(fā)技術(shù)

Ajax 是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù)。

2. 如何使用 AJAX

XMLHttpRequest 是 AJAX 的基礎(chǔ)。

XMLHttpRequest 用于在后臺與服務器交換數(shù)據(jù)。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。

使用AJAX大致分四步

1. 創(chuàng)建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.注冊狀態(tài)回調(diào)函數(shù)(當XMLHttpRequest 對象的readyState每次發(fā)生變化時調(diào)用該回調(diào)函數(shù))

//當xhr.readyState == 4時所有的步驟都已執(zhí)行完畢
//當xhr.state == 200時表示已經(jīng)正確執(zhí)行
 xhr.onreadystatechange=function(){
  if(xhr.readyState == 4  xhr.state == 200){
    alter("請求已全部執(zhí)行,并且成功");
  }
}

3.建立與服務器的異步連接(默認為異步)

/**
 open(method,url,async)方法
 規(guī)定請求的類型、URL 以及是否異步處理請求。
 method:請求的類型;GET 或 POST
 url:相求處理請求的url
 async:true(異步)或 false(同步)
 通過time來保證,每次發(fā)送新的請求
*/
xhr.open("Post", "/detailsU?time=" + new Date().getTime());

4.發(fā)出異步請求

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

通過以上四步就可以成功的發(fā)送請求了

附源碼:

{{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("請輸入調(diào)整的庫存大?。?);
          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("請求已全部執(zhí)行,并且成功");
                }
              }
              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中創(chuàng)建數(shù)據(jù)的結(jié)構(gòu)

/**
 要與傳過來的json格式字符串對應
 '{"Index":"'+index +'", "Change":"' + i +'"}'
*/
type Object struct {
 Index string
 Change string
}

2. 注冊相應的路由

/**
 在main.go當中注冊相應的路由(注意與對應路由設(shè)置好)
 xhr.open("Post", "/detailsU?time=" + new Date().getTime());
 "Post:DoUpdate"用來注冊當Post方法請求該URL處理的函數(shù)
*/
beego.Router("/detailsU", controllers.DetailController{}, "Post:DoUpdate")

3. 在controller中寫好相應的處理函數(shù)

/**
 在對應的函數(shù)中處理相應的請求
 json.Unmarshal(this.Ctx.Input.RequestBody, ob)
 通過json來解析穿過來的數(shù)據(jù),并將數(shù)據(jù)存儲在ob對象中
 在app.conf中設(shè)置copyrequestbody = true
*/
func (this *DetailController) DoUpdate(){
    ob := models.Object{}
    json.Unmarshal(this.Ctx.Input.RequestBody, ob)
    db, err := sql.Open("mysql", "用戶名:密碼@tcp(IP:3306)/數(shù)據(jù)庫名")
    result, err := db.Exec("UPDATE 數(shù)據(jù)表名 SET 字段= ? WHERE id = ?",ob.Change, ob.Index)
    if err != nil{
      beego.Error(err)
      return
    }else{
       fmt.Println(result)
    }
}

以上這篇beego獲取ajax數(shù)據(jù)的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

標簽:駐馬店 東營 泰安 滄州 昭通 瀘州 阿壩 晉中

巨人網(wǎng)絡(luò)通訊聲明:本文標題《beego獲取ajax數(shù)據(jù)的實例》,本文關(guān)鍵詞  beego,獲取,ajax,數(shù)據(jù),的,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《beego獲取ajax數(shù)據(jù)的實例》相關(guān)的同類信息!
  • 本頁收集關(guān)于beego獲取ajax數(shù)據(jù)的實例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鄂托克前旗| 得荣县| 荥经县| 涞水县| 芷江| 托里县| 军事| 达州市| 衡阳市| 龙南县| 于田县| 江山市| 秦皇岛市| 屏东市| 微博| 新竹市| 桐乡市| 汉寿县| 揭东县| 宜兰县| 永春县| 河间市| 三明市| 江陵县| 乌鲁木齐县| 辉县市| 阜南县| 缙云县| 东丰县| 舟曲县| 莱西市| 屏东市| 桃江县| 石景山区| 永济市| 临湘市| 三江| 文成县| 宣恩县| 平陆县| 关岭|