使用Ext.Ajax.request提交數(shù)據(jù)的代碼如下(這段代碼在一個(gè)Js文件中,為避免中文亂碼,js文件必須是utf-8編碼):
- <script type="text/javascript">
- Ext.Ajax.request({
- url:'http://localhost:8080/myapp/ExtHandler',//請(qǐng)求URL(JSP/Servlet)
- jsonData:Ext.util.JSON.encode(info),
- params:{action:'up'},
- success: function(resp,opts) {
- var respText = Ext.util.JSON.decode(resp.responseText);
- Ext.Msg.alert('提示', respText.info);
- },
-
- failure: function(resp,opts) {
- var respText = Ext.util.JSON.decode(resp.responseText);
- Ext.Msg.alert('錯(cuò)誤', respText.error);
- }
-
- });
-
- </script>
1、url:參數(shù)指定的是一個(gè)Java Servlet,
2、jsonData:參數(shù)提交JSON格式的數(shù)據(jù)到Servlet處理,你也可以提交其它參數(shù),
3、params參數(shù)中定義;
4、success:然后根據(jù)服務(wù)器的處理結(jié)果Ext.Ajax調(diào)用相應(yīng)成功或失敗的回調(diào)函數(shù)進(jìn)行處理;
在Servlet中如何得到j(luò)sonData參數(shù)中定義的數(shù)據(jù)呢?看以下代碼:
- StringBuffer json = new StringBuffer();
-
- String line = null;
-
- try {
-
- BufferedReader reader = req.getReader();
-
- while ((line = reader.readLine()) != null) {
-
-
-
- json.append(line);
-
- }
-
- } catch (Exception e) {
-
- }
服務(wù)端處理數(shù)據(jù)成功,設(shè)置返回信息:
-
-
- rsp.setContentType("text/json; charset=utf-8");
-
- rsp.getWriter().write(
- "{success:true,info:'更新信息成功'}"+",");
服務(wù)器端處理數(shù)據(jù)失敗,設(shè)置返回信息:
- rsp.setContentType("text/json; charset=utf-8");
-
- rsp.getWriter().write(
- "{success:false,error:'更新信息失敗,原因?yàn)?" + err + "'}");
- rsp.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
-
-
折騰了一晚上,也沒(méi)弄明白為什么把success置了false,還是不執(zhí)行failure,或者把failure置為true,也還是不執(zhí)行。
早上到晚上一看,原來(lái)ajax中的success或是failure和那個(gè)沒(méi)關(guān)系,只要執(zhí)行中response返回的status為200,都是會(huì)執(zhí)行success里面的函數(shù)的,
只有通過(guò)下面代碼設(shè)置status狀態(tài)后,才會(huì)執(zhí)行failure
//response.setStatus(500);
Ext.form.Action.Submit的配置選項(xiàng)success、failure是根據(jù)返回json中success屬性判斷的,如果success為true,則success,false則failure,如果無(wú)json中無(wú)success屬性,failure,故要提示操作是否成功,必須要返回success屬性。
Ext.Ajax.request的配置選項(xiàng)
success、failure是根據(jù)response的status屬性,即狀態(tài)碼決定的,200則為success,404或500等則為failure。
Sample2:
- <script type="text/javascript">
- Ext.onReady(function(){
- Ext.Msg.confirm("record!","OYE",function(btn){
- if(btn=="yes"){
- var rs = new Ext.data.Record({id:"1",name:"aaa"});
- Ext.Ajax.request({
- params:rs.data,
- url:"rs.jsp",
- method:"post",
- success:function(resp){
- var res = resp.responseText;
- Ext.Msg.alert("attention","Success! /""+res+"/"");
- },
- failure:function(){
- Ext.Msg.alert("attention","Failure!");
- }
- });
- }
- });
- });
- </script>
html代碼:
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <html><head><title>TITLE</title></head><body>
- <%
- String id = request.getParameter("id");
- String name = request.getParameter("name");
- out.println("id = "+id+" and name = "+name);
- String date = new Date().toString();
- out.print(date);
- %>
-
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。