亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年12月21日 15:25:33   作者:Super_Ssssss  
下面小編就為大家分享一篇beego獲取ajax數(shù)據(jù)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. 什么是AJAX

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

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

2. 如何使用 AJAX

XMLHttpRequest 是 AJAX 的基礎(chǔ)。

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

使用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ù)(當(dāng)XMLHttpRequest 對象的readyState每次發(fā)生變化時調(diào)用該回調(diào)函數(shù))

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

3.建立與服務(wù)器的異步連接(默認(rèn)為異步)

/**
 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格式字符串對應(yīng)
 '{"Index":"'+index +'", "Change":"' + i +'"}'
*/
type Object struct {
 Index string
 Change string
}

2. 注冊相應(yīng)的路由

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

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

/**
 在對應(yīng)的函數(shù)中處理相應(yīng)的請求
 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ù)的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go語言定時任務(wù)的實(shí)現(xiàn)示例

    Go語言定時任務(wù)的實(shí)現(xiàn)示例

    本文主要介紹了Go語言定時任務(wù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Golang中struct{}和struct{}{}的區(qū)別解析

    Golang中struct{}和struct{}{}的區(qū)別解析

    這篇文章主要介紹了Golang中struct{}和struct{}{}的區(qū)別,通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Go語言實(shí)現(xiàn)牛頓法求平方根函數(shù)的案例

    Go語言實(shí)現(xiàn)牛頓法求平方根函數(shù)的案例

    這篇文章主要介紹了Go語言實(shí)現(xiàn)牛頓法求平方根函數(shù)的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang實(shí)現(xiàn)圖像驗證碼的示例代碼

    golang實(shí)現(xiàn)圖像驗證碼的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用golang實(shí)現(xiàn)簡單的圖像驗證碼,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Golang內(nèi)存分配機(jī)制詳解

    Golang內(nèi)存分配機(jī)制詳解

    Go 語言的內(nèi)存分配機(jī)制是理解和優(yōu)化 Go 程序性能的關(guān)鍵,在 Go 中,內(nèi)存管理是自動進(jìn)行的,這得益于 Go 的垃圾回收機(jī)制,了解內(nèi)存如何分配和回收,可以幫助我們寫出更高性能的代碼,本文將深入講解下 Go 內(nèi)存分配機(jī)制,需要的朋友可以參考下
    2023-12-12
  • Go語言range關(guān)鍵字循環(huán)時的坑

    Go語言range關(guān)鍵字循環(huán)時的坑

    今天小編就為大家分享一篇關(guān)于Go語言range關(guān)鍵字循環(huán)時的坑,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Golang使用singleflight解決并發(fā)重復(fù)請求

    Golang使用singleflight解決并發(fā)重復(fù)請求

    高并發(fā)的場景下,經(jīng)常會出現(xiàn)并發(fā)重復(fù)請求資源的情況,singleflight是golang內(nèi)置的一個包,這個包提供了對重復(fù)函數(shù)調(diào)用的抑制功能,所以下面我們就來看看如何使用它解決并發(fā)重復(fù)請求吧
    2023-08-08
  • golang并發(fā)安全及讀寫互斥鎖的示例分析

    golang并發(fā)安全及讀寫互斥鎖的示例分析

    這篇文章主要為大家介紹了golang并發(fā)安全及讀寫互斥鎖的示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • go語言的工作空間和GOPATH環(huán)境變量介紹

    go語言的工作空間和GOPATH環(huán)境變量介紹

    這篇文章主要介紹了go語言的工作空間和GOPATH環(huán)境變量介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang 實(shí)現(xiàn)interface類型轉(zhuǎn)string類型

    Golang 實(shí)現(xiàn)interface類型轉(zhuǎn)string類型

    這篇文章主要介紹了Golang 實(shí)現(xiàn)interface類型轉(zhuǎn)string類型的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論