ext.ajax.request方法用法詳解

來源:互聯網
上載者:User

json資料服務器回傳的方法.

在api總指出回傳的格式

 代碼如下 複製代碼
{success;true,data:{clientName: "Fred. Olsen Lines",   portOfLoading:"FXT",portOfDischarge: "OSL" }  }}}

需要注意的是這裡的success和data是關鍵字,(姑且這麼叫吧)在data中是資料在用戶端通過

Ext .decode(response.responseText).clientName獲得.第一個回傳資料.這裡證明在用

success: function(response){}函數的時候,參數response是一個json字串,通過Ext .decode解析了data的資料集.

//成功時回叫,第一個參數為XMLHttpRequest對象,第二個參數傳入指定的options

所有,這裡前背景代碼應該這樣統一:

後台(asp):

 代碼如下 複製代碼

response.write "{success:false,data:{msg:'密碼或使用者名稱不可為空!'}}"

response.write "{success:true,data:{msg:'登陸成功!'}}"

前台:

 代碼如下 複製代碼

success: function(response,options ){Ext .MessageBox.alert(' 提示',Ext.decode(response.responseText).msg);},
 failure: function(response,options ){Ext .MessageBox.alert('提示','Ext.decode(response.responseText).msg);},

還可以:

 代碼如下 複製代碼
Ext .util.JSON.decode(response.responseText); 這

個也是對json編碼的解析
 

Ext.Ajax.request方法

 代碼如下 複製代碼
<SPAN style="FONT-SIZE: medium">Ext.Ajax.request({  
       url:'findbyid.action',
       params:{
        id:cell.getId()
        },
        success: function(resp,opts) {
                             var respText = Ext.util.JSON.decode(resp.responseText);                                                
                             name=respText.name;
                             oid=respText.id; 
                          findbyid(graph,cell,oid,name);
                             //Ext.Msg.alert('錯誤', respText.name+"====="+respText.id);
                     },
                     failure: function(resp,opts) {
                             var respText = Ext.util.JSON.decode(resp.responseText);
                             Ext.Msg.alert('錯誤', respText.error);
                      }  
      
      });</SPAN>

在Ext開發過程中,基本上時刻需要用到非同步請求,那麼這個請求到底是怎麼執行的呢,我們接下來來探討下

先:Ext.Ajax類繼承了Ext.data.Connection,為Ajax的請求提供了最大靈活性的操作方式

再簡單請求基礎上我們加上一個使用的

 說明的是這種請求通常都是放在觸發某個事件的處理方法中的

url:就是我們要請求的路徑

params:裡面的參數用逗號隔開,就是我們要發出請求帶的參數

success:是伺服器處理成功返回

failure:是伺服器處理失敗返回

重點講的就是如何處理傳回值資訊,我們的resp這個參數就顯得非常重要了

resp是Ext構造的一個返回結果對象,如伺服器端返回“this is a test!”(可以通過throw new Exception("this is a test!")簡單實現)。那麼返回將是
如下內容:

 代碼如下 複製代碼
<SPAN style="FONT-SIZE: medium">tId.1
status.200
statusText.OK
getResponseHeader.[object Object]
getAllResponseHeaders.Server: Apache-Coyote/1.1
Content-Type: text/html;charset=GBK
Content-Language: zh-CN
Content-Length: 108
Date: Wed, 31 Oct 2007 12:51:23 GMT
responseText.
<html>
<head>
<title>錯誤</title>
</head>
<body>
  <h1>錯誤:this is a test!</h1>
</body>
</html>
responseXML.
argument.undefined</SPAN>

從上面結果可以看出來,最開始是一些狀態屬性,我們也不常用,不管他。裡面真正常用的是responseText與responseXML兩個屬性,那麼這裡面的responseText內容又被Ext用html封裝了,但使用Ext.MessageBox展示出來正合適;reponseXML將在伺服器端返回“text/xml”類型時使用。若伺服器端返回是“text/json”類型時,用戶端需要使用obj= Ext.util.JSON.decode(result.responseText);進行構造json對象,然後就可以正常使用了
具體操作傳回值 我們用JSON就這麼寫
ServletActionContext.getResponse().setContentType("text/json; charset=utf-8");
ServletActionContext.getResponse().getWriter().write("{success:true,info:'更新資訊成功',name:'" + oo.getName() + "',id:'" + id + "'}");
顯然我這裡返回的是JSON的值了(記住裡面的屬性值一定要加單引號)
 var respText = Ext.util.JSON.decode(resp.responseText);
這個就可獲得返回結果對象,要使用屬性的話respText.id等都可直接用了


 
使用Ext.Ajax.request方法來進行的,該方法可以用來向伺服器端發送一個http請求,並可以在回呼函數中處理返回的結果。往遠程伺服器發送一個HTTP請求,發送Ajax調用的時候該方法的簽名如下:
Ext.Ajax.rquest( [Object options] ) : Number


伺服器的響應是非同步,因此需要在回呼函數中處理伺服器端返回的資料。回呼函數可以定義在request方法調用的參數options中。另外,在 request方法中可以定義Ajax請求的一些其它屬性。參數options是一個對象,該對象包含了Ajax請求所需的各種參數及回調處理參數等。 options中可以包含的各個屬性及含義如下所示:
  url String 指定要請求的伺服器端url,預設值為Ajax對象中配置的URL參數值。
  params Object/String/Function 指定要傳遞的參數,可以是一個包含參數名稱及值的對象,也可以是name=xx&birthday=1978-1-1類似的url編碼字串,或者是一個能返回上述兩種內容的函數。
  method String 指定發送Ajax請求使用的method,可以是GET或POST方式。預設情況下,如果請求中沒有傳遞任何參數則使用GET,否則使用POST。
  callback Function 指定Ajax請求的回呼函數,該函數不管是調用成功或失敗,都會執行。傳遞給回呼函數的參 數有三個,第一個options表示執行request方法時的參數,第二個success表示請求是否成功,第三個參數response表示用來執行 Ajax請求的XMLHttpRequest 對象。關於XMLHttpRequest可以通過
查詢詳細的資訊。


success Function 指定當Ajax請求執行成功後執行的回呼函數,傳遞給回呼函數兩個參數,第一個參數response表示執行Ajax請求的XMLHttpRequet對象,第二個參數表示執行request方法時的options對象。
  failure Function 指定當請求出現錯誤時執行的回呼函數,傳遞給回呼函數兩個參數,第一個參數response表示執行Ajax請求的XMLHttpRequet對象,第二個參數表示執行request方法時的options對象。
  scope Object 指定回呼函數的範圍,預設為瀏覽器window。
  form Object/String 指定要提交的表單id或表單資料對象。
  isUpload Boolean 指定要提交的表單是否是檔案上傳表單,預設情況下會自動檢查。
  headers Object 指定請求的Header資訊。
  xmlData Object 指定用於發送給伺服器的xml文檔,如果指定了該屬性則其它地方設定的參數將無效。
  jsonData Object/String 指定需要發送給伺服器端的JSON資料。如果指定了該屬性則其它的地方設定的要發送的參數值將無效。
  disableCaching Boolean 是否禁止cache

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.