I'll be back!

            Focus on BPM, celebrate PegaRULES Process Commander (PRPC)
          posts - 76, comments - 161, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Dojo 的 Ajax 簡單應(yīng)用

          Posted on 2006-10-24 18:56 zolly 閱讀(4655) 評論(0)  編輯  收藏
          在同一個頁面插入數(shù)據(jù)到數(shù)據(jù)庫,成功后返回成功插入的結(jié)果,相關(guān)文件PRPC.htm,SerDojo.java,DataDAO.java。
          Dojo開發(fā)包:dojo-0.3.1-ajax.zip.

          相關(guān)網(wǎng)站:http://www.aygfsteel.com/burnet/archive/2006/06/27/55339.html
          http://manual.dojotoolkit.org/(官方)
          http://manual.dojotoolkit.org/WikiHome/DojoDotBook?(Dojo Book)
          http://ajaxcn.org/forum/posts/list/127.page?(Ajax 中文站,Dojo 文檔列表)

          代碼如下:
          PRPC.htm
          <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
          <html?xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta?http-equiv="Content-Type"?content="text/html;?charset=ISO-8859-1">
          <title>PRPC?Test</title>
          <script?type="text/javascript"?src="js/dojo/dojo.js"></script>
          <script?type="text/javascript">
          dojo.require(
          "dojo.io.*");

          function?mySubmitProfile()?{
          ????dojo.byId('btnAddProfile').disabled?
          =?'disabled';
          ????
          ????dojo.io.bind?(
          {
          ????????url:?'SerDojo
          ?flag=profile',
          ????????handler:?callBack,
          ????????formNode:?dojo.byId('main')
          ????}
          );
          }


          function?mySubmitCountry()?{
          ????dojo.byId('btnAddCountry').disabled?
          =?'disabled';

          ????dojo.io.bind?(
          {
          ????????url:?'SerDojo
          ?flag=country',
          ????????handler:?callBack,
          ????????formNode:?dojo.byId('main')
          ????}
          );
          }


          function?callBack(type,?data,?evt)?{
          ????
          if?(data?==?'profileYES')?{
          ????????insertStrProfile();
          ????????dojo.byId('stateFlag').innerHTML?
          =?data;
          ????????dojo.byId('btnAddProfile').disabled?
          =?'';
          ????}
          ?else?if?(data?==?'countryYES')?{
          ????????insertStrCountry();
          ????????dojo.byId('stateFlag').innerHTML?
          =?data;
          ????????dojo.byId('btnAddCountry').disabled?
          =?'';
          ????}

          }


          function?insertStrProfile()?{
          ????
          var?frm?=?dojo.byId('main');
          ????
          var?name?=?frm.name.value;
          ????
          var?sex;
          ????
          var?radio?=?document.getElementsByName('sex');
          ????
          for?(var?i?=?0;?i?<?radio.length;?i?++)?{
          ????????
          if(frm.sex[i].checked)?{
          ????????????sex?
          =?radio[i].value;
          ????????}

          ????}

          ????
          var?age?=?frm.age.value;
          ????
          var?address?=?frm.address.value;
          ????
          ????
          var?txtName?=?document.createTextNode(name);
          ????
          var?txtSex?=?document.createTextNode(sex);
          ????
          var?txtAge?=?document.createTextNode(age);
          ????
          var?txtAddress?=?document.createTextNode(address);
          ????
          ????
          var?tdName?=?document.createElement("td");
          ????
          var?tdSex?=?document.createElement("td");
          ????
          var?tdAge?=?document.createElement("td");
          ????
          var?tdAddress?=?document.createElement("td");
          ????
          ????
          var?tr?=?document.createElement("tr");

          ????tdName.appendChild(txtName);
          ????tdSex.appendChild(txtSex);
          ????tdAge.appendChild(txtAge);
          ????tdAddress.appendChild(txtAddress);
          ????
          ????tr.appendChild(tdName);
          ????tr.appendChild(tdSex);
          ????tr.appendChild(tdAge);
          ????tr.appendChild(tdAddress);

          ????
          var?parNode?=?document.getElementById("tbProfile");
          ????parNode.appendChild(tr);
          }


          function?insertStrCountry()?{
          ????
          var?frm?=?dojo.byId('main');
          ????
          var?country?=?frm.country.value;
          ????
          var?company?=?frm.company.value;
          ????
          var?website?=?frm.website.value;

          ????
          var?txtCountry?=?document.createTextNode(country);
          ????
          var?txtCompany?=?document.createTextNode(company);
          ????
          var?txtWebsite?=?document.createTextNode(website);

          ????
          var?tdCountry?=?document.createElement("td");
          ????
          var?tdCompany?=?document.createElement("td");
          ????
          var?tdWebsite?=?document.createElement("td");

          ????
          var?tr?=?document.createElement("tr");

          ????tdCompany.appendChild(txtCompany);
          ????tdCountry.appendChild(txtCountry);
          ????tdWebsite.appendChild(txtWebsite);

          ????tr.appendChild(tdCompany);
          ????tr.appendChild(tdCountry);
          ????tr.appendChild(tdWebsite);

          ????
          var?parNode?=?document.getElementById("tbCountry");
          ????parNode.appendChild(tr);
          }

          </script>
          </head>

          <body>
          <form?id="main">
          <table?width="600"?border="0"?align="center"?cellpadding="0"?cellspacing="0"?style="border:?1px?dashed?#000000;">
          ??
          <tr>
          ????
          <td?valign="top">
          ??????
          <table?width="100%"?border="0"?cellspacing="0"?cellpadding="3">
          ????????
          <tr>
          ??????????
          <td><table?width="80%"?border="1"?align="center"?cellpadding="1"?cellspacing="1">
          ???????????
          <tbody?id="tbProfile">
          ????????????
          <tr>
          ??????????????
          <td>Name</td>
          ??????????????
          <td>Age</td>
          ??????????????
          <td>Sex</td>
          ??????????????
          <td>Address</td>
          ????????????
          </tr>
          ???????????
          </tbody>
          ??????????
          </table></td>
          ????????
          </tr>
          ????????
          <tr>
          ??????????
          <td><table?width="50%"?border="0"?align="center"?cellpadding="2"?cellspacing="1"?bgcolor="#CCCCCC">
          ????????????
          <tr>
          ??????????????
          <td?width="29%"?bgcolor="#EBEBEB">Name:</td>
          ??????????????
          <td?width="71%"?bgcolor="#EBEBEB"><input?type="text"?name="name"?/></td>
          ????????????
          </tr>
          ????????????
          <tr>
          ??????????????
          <td?bgcolor="#EBEBEB">Age:</td>
          ??????????????
          <td?bgcolor="#EBEBEB"><input?type="text"?name="age"?/></td>
          ????????????
          </tr>
          ????????????
          <tr>
          ??????????????
          <td?bgcolor="#EBEBEB">Sex:</td>
          ??????????????
          <td?bgcolor="#EBEBEB"><input?type="radio"?name="sex"?checked="checked"?value="Male"?/>
          ????????????????Male
          ??????????????????
          <input?type="radio"?name="sex"?value="Female"?/>
          ??????????????????Female
          </td>
          ????????????
          </tr>
          ????????????
          <tr>
          ??????????????
          <td?bgcolor="#EBEBEB">Address:</td>
          ??????????????
          <td?bgcolor="#EBEBEB"><input?type="text"?name="address"?/></td>
          ????????????
          </tr>
          ????????????
          <tr>
          ??????????????
          <td?colspan="2"?bgcolor="#EBEBEB"><div?align="right">
          ????????????????
          <input?type="button"?name="btnAddProfile"?value="AddNew"?onclick="mySubmitProfile()"?/>
          ??????????????
          </div></td>
          ??????????????
          </tr>
          ??????????
          </table></td>
          ????????
          </tr>
          ??????
          </table>
          ????
          <table?width="100%"?border="0"?cellspacing="0"?cellpadding="0">
          ??
          <tr>
          ????
          <td?height="20"><font?color="#FF0000"><div?id="stateFlag">State</div></font></td>
          ??
          </tr>
          </table>

          ????
          <hr?width="90%"?size="1"?noshade="noshade"?/>
          ????
          </td>
          ??
          </tr>
          ??
          <tr>
          ????
          <td?valign="top">
          ??????
          <table?width="100%"?border="0"?cellspacing="0"?cellpadding="3">
          ????????
          <tr>
          ??????????
          <td><table?width="80%"?border="1"?align="center"?cellpadding="1"?cellspacing="1">
          ??????????????
          <tbody?id="tbCountry">
          ????????????
          <tr>
          ??????????????
          <td>Company</td>
          ??????????????
          <td>Country</td>
          ??????????????
          <td>WebSite</td>
          ????????????
          </tr>
          ????????????
          </tbody>
          ??????????
          </table></td>
          ????????
          </tr>
          ????????
          <tr>
          ??????????
          <td><table?width="50%"?border="0"?align="center"?cellpadding="2"?cellspacing="1"?bgcolor="#CCCCCC">
          ????????????
          <tr>
          ??????????????
          <td?width="29%"?bgcolor="#EBEBEB">Company:</td>
          ??????????????
          <td?width="71%"?bgcolor="#EBEBEB"><input?type="text"?name="company"?/></td>
          ????????????
          </tr>
          ????????????
          <tr>
          ??????????????
          <td?bgcolor="#EBEBEB">Country:</td>
          ??????????????
          <td?bgcolor="#EBEBEB"><input?type="text"?name="country"?/></td>
          ????????????
          </tr>
          ????????????
          <tr>
          ??????????????
          <td?bgcolor="#EBEBEB">WebSite:</td>
          ??????????????
          <td?bgcolor="#EBEBEB"><input?type="text"?name="website"?/></td>
          ????????????
          </tr>

          ????????????
          <tr>
          ??????????????
          <td?colspan="2"?bgcolor="#EBEBEB"><div?align="right">
          ??????????????????
          <input?type="button"?name="btnAddCountry"?value="AddNew"?onclick="mySubmitCountry()"?/>
          ??????????????
          </div></td>
          ????????????
          </tr>
          ??????????
          </table></td>
          ??????????
          <tr>
          ??????????????
          <td?align="right">
          ??????????????????
          <input?type="button"?value="NEXT"?onclick="javascript:window.open('dojoBind.htm','_self')"?/>
          ??????????????
          </td>
          ??????????
          </tr>
          ????????
          </tr>
          ??????
          </table>
          ????
          </td>
          ??
          </tr>
          </table>
          </form>
          </body>
          </html>

          SerDojo.java
          package?servlet;

          import?DAO.DataDAO;

          import?java.io.IOException;
          import?java.io.PrintWriter;

          import?javax.servlet.ServletException;
          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;


          /**
          ?*?Servlet?implementation?class?for?Servlet:?SerDojo
          ?*
          ?
          */

          public?class?SerDojo?extends?javax.servlet.http.HttpServlet
          ????
          implements?javax.servlet.Servlet?{
          ????
          /*?(non-Java-doc)
          ?????????*?@see?javax.servlet.http.HttpServlet#HttpServlet()
          ?????????
          */

          ????
          public?SerDojo()?{
          ????????
          super();
          ????}


          ????
          /*?(non-Java-doc)
          ?????*?@see?javax.servlet.http.HttpServlet#doGet(HttpServletRequest?request,?HttpServletResponse?response)
          ?????
          */

          ????
          protected?void?doGet(HttpServletRequest?request,
          ????????HttpServletResponse?response)?
          throws?ServletException,?IOException?{
          ????????
          //?TODO?Auto-generated?method?stub
          ????????PrintWriter?out?=?response.getWriter();
          ????????String?strFlag?
          =?request.getParameter("flag");

          ????????String?strName?
          =?request.getParameter("name");
          ????????String?strAge?
          =?request.getParameter("age");
          ????????String?strSex?
          =?request.getParameter("sex");
          ????????String?strAddress?
          =?request.getParameter("address");

          ????????String?strCompany?
          =?request.getParameter("company");
          ????????String?strCountry?
          =?request.getParameter("country");
          ????????String?strWebSite?
          =?request.getParameter("website");

          ????????DataDAO?dao?
          =?new?DataDAO();
          ????????
          boolean?isSuccess?=?false;

          ????????
          if?(strFlag.equals("profile"))?{
          ????????????
          try?{
          ????????????????isSuccess?
          =?dao.insertProfile(strName,?strAge,?strSex,
          ????????????????????????strAddress);
          ????????????}
          ?catch?(Exception?e)?{
          ????????????????e.printStackTrace();
          ????????????}


          ????????????
          if?(isSuccess)?{
          ????????????????out.print(
          "profileYES");
          ????????????}
          ?else?{
          ????????????????out.print(
          "profileNO");
          ????????????}

          ????????}
          ?else?if?(strFlag.equals("country"))?{
          ????????????
          try?{
          ????????????????isSuccess?
          =?dao.insertCompany(strCompany,?strCountry,?strWebSite);
          ????????????}
          ?catch?(Exception?e)?{
          ????????????????e.printStackTrace();
          ????????????}


          ????????????
          if?(isSuccess)?{
          ????????????????out.print(
          "countryYES");
          ????????????}
          ?else?{
          ????????????????out.print(
          "countryNO");
          ????????????}

          ????????}

          ????}


          ????
          /*?(non-Java-doc)
          ?????*?@see?javax.servlet.http.HttpServlet#doPost(HttpServletRequest?request,?HttpServletResponse?response)
          ?????
          */

          ????
          protected?void?doPost(HttpServletRequest?request,
          ????????HttpServletResponse?response)?
          throws?ServletException,?IOException?{
          ????????
          //?TODO?Auto-generated?method?stub
          ????????doGet(request,?response);
          ????}

          }

          DataDAO.java
          package?DAO;

          import?java.sql.Connection;
          import?java.sql.Statement;


          public?class?DataDAO?{
          ????
          public?boolean?insertCompany(String?djCompany,?String?djCountry,
          ????????String?djWebSite)?
          throws?Exception?{
          ????????
          boolean?success?=?false;
          ????????String?sql?
          =?"insert?into?Dojo_Table_Company??";
          ????????sql?
          +=?("values('"?+?djCompany?+?"','"?+?djCountry?+?"','"?+?djWebSite?+
          ????????
          "')");
          ????????
          ????????
          //ResultSet?rs=null;
          ????????Connection?con?=?null;
          ????????Statement?stat?
          =?null;

          ????????
          try?{
          ????????????con?
          =?Login.getConnection();
          ????????????stat?
          =?con.createStatement();
          ????????????stat.executeUpdate(sql);
          ????????????success?
          =?true;
          ????????}
          ?catch?(Exception?e)?{
          ????????????
          //e.printStackTrace();
          ????????????throw?e;
          ????????}

          ????????
          finally?{
          ????????????Login.closeStatement(stat);
          ????????????Login.closeConnection(con);
          ????????}


          ????????
          return?success;
          ????}


          ????
          public?boolean?insertProfile(String?djName,?String?djSex,?String?djAge,
          ????????String?djAddress)?
          throws?Exception?{
          ????????
          boolean?success?=?false;
          ????????String?sql?
          =?"insert?into?Dojo_Table_Profile??";
          ????????sql?
          +=?("values('"?+?djName?+?"','"?+?djSex?+?"','"?+?djAge?+?"','"?+
          ????????djAddress?
          +?"')");

          ????????
          //ResultSet?rs=null;
          ????????Connection?con?=?null;
          ????????Statement?stat?
          =?null;

          ????????
          try?{
          ????????????con?
          =?Login.getConnection();
          ????????????stat?
          =?con.createStatement();
          ????????????stat.executeUpdate(sql);
          ????????????success?
          =?true;
          ????????}
          ?catch?(Exception?e)?{
          ????????????
          //e.printStackTrace();
          ????????????throw?e;
          ????????}

          ????????
          finally?{
          ????????????Login.closeStatement(stat);
          ????????????Login.closeConnection(con);
          ????????}


          ????????
          return?success;
          ????}

          }


          關(guān)于dojo.io.bind的學(xué)習(xí)筆記

          模塊:dojo.io.IO

          dojo.io.bind


          處理請求取回需要的數(shù)據(jù)并處理

          ?

          這個函數(shù)是AJAX中最為重要和有用的函數(shù),dojo.io.bind這個類是用來處理客戶端與服務(wù)器間通訊的,需要通訊的參數(shù)由對象dojo.io.Request所定義,具體通訊的方法則由另外一個對象Transport所提供。

          ?

          因此,我們?nèi)绻枰c服務(wù)器通訊,則應(yīng)該定義一個Request對象,其中包括服務(wù)器地址及回調(diào)函數(shù),例子中Requset都是以匿名對象方式定義的


          雖然我們可以定義一個自己的Transport,但是顯然不如直接利用現(xiàn)成的Transport方便。


          Dojo里提供了一個同時兼容IE和Firefox的dojo.io.XMLHTTPTransport,但是這個對象位于dojo.io.BrowserIO,因此,一般require dojo.io.IO時,還應(yīng)該require dojo.io.BrowserIO

          ?

          Usage Example:

          ? dojo.io.bind({
          ??? url: "http://localhost/test.html", //要請求的頁面地址
          ??? mimetype: "text/html", //請求的頁面的類型,應(yīng)該設(shè)置為與你請求頁面類型對應(yīng)的mimetype,默認為 "text/plain"
          ??? method:"GET", //默認為"GET"
          ??? sync: false, //默認為異步執(zhí)行
          ??? useCache: false, //默認為不使用頁面緩存,注意這里的緩存并不是瀏覽器的緩存,而是Dojo自身所維護的頁面緩存
          ??? preventCache: false, //默認為啟用瀏覽器緩存,否則將通過自動增加不同的參數(shù)來確保瀏覽器緩存失效
          ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時

          ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
          ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
          ??? timeout: function(type) { alert("請求超時!"); }
          ? });


          ? 你也可以用一個handle來處理所有的事件

          ?

          ? dojo.io.bind({
          ??? url: "http://localhost/test.html", //要請求的頁面地址
          ??? mimetype: "text/html", //請求的頁面的類型,應(yīng)該設(shè)置為與你請求頁面類型對應(yīng)的mimetype
          ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
          ??? handle: function(type, data, evt){
          ????? if(type == "load") { alert(data); } //data is that we wanted
          ????? else if (type == "error") { alert(data.message); } //data is the error object
          ????? else { ; } //other events maybe need handled
          ??? }
          ? });
          ?
          ? 如果沒有在Request中指定所用的transport,則Dojo會自動的在已注冊的transports中尋找能夠處理這個Request的transport,如果不能找到,則返回指定的Request。下面是一個指定了transport的例子:


          ? dojo.io.bind({
          ??? url: "http://localhost/test.html", //要請求的頁面地址
          ??? mimetype: "text/html", //請求的頁面的類型,應(yīng)該設(shè)置為與你請求頁面類型對應(yīng)的mimetype
          ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
          ??? transport: "XMLHTTPTransport",

          ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
          ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
          ??? timeout: function(type) { alert("請求超時!"); }
          ? });


          ? 你還可以利用bind來得到一個JavaScript所定義的對象(注意mimetype必須要定義為"text/javascript")

          ?

          ? testObj = dojo.io.bind({
          ??? url: "http://localhost/test.js", //test.js里定義了一個對象
          ??? mimetype: "text/javascript", //請求的頁面的類型,應(yīng)該設(shè)置為與你請求頁面類型對應(yīng)的mimetype
          ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
          ??? handle: function(type, data, evt){
          ????? if(type == "load") { alert(data); } //data is a object or value
          ????? else if (type == "error") { alert(data.message); } //data is the error object
          ????? else { ; } //other events maybe need handled
          ??? }
          ? });
          ?
          ? 下面是一個Post的例子:
          ?
          ? dojo.io.bind({
          ??? url: "http://localhost/test.aspx", //要提交的頁面地址
          ??? mimetype: "text/html", //請求的頁面的類型,應(yīng)該設(shè)置為與你請求頁面類型對應(yīng)的mimetype
          ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
          ??? method: "POST",
          ??? formNode: dojo.byId("myForm"), //指定提交的Form名稱

          ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
          ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
          ??? timeout: function(type) { alert("請求超時!"); }
          ? });

          ?

          ? 另一個Post的例子(without Form to post):


          ? dojo.io.bind({
          ??? url: "http://localhost/test.aspx", //要提交的頁面地址
          ??? mimetype: "text/html", //請求的頁面的類型,應(yīng)該設(shè)置為與你請求頁面類型對應(yīng)的mimetype
          ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
          ??? method: "POST",
          ??? content: {a: 1, b: 2}, //要提交的數(shù)據(jù)

          ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
          ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
          ??? timeout: function(type) { alert("請求超時!"); }
          ? });


          ?

          dojo.io.queueBind


          ? 有時,我們需要一次發(fā)出多個網(wǎng)頁請求,則應(yīng)該使用dojo.io.queueBind,因為瀏覽器可能只允許同時發(fā)出有限個數(shù)的請求,如果是使用dojo.io.bind的話,則有可能會申請不到新的XMLHttp對象而導(dǎo)致出錯。

          ? 用法與dojo.io.bind是一樣的。


          ?

          dojo.io.argsFromMap


          ? 用來把對象轉(zhuǎn)換為URL的參數(shù)形式
          ?
          Usage Example:


          ? dojo.io.argsFromMap({a:1,b:2,c:3}); //will return "c=3&b=2&a=1"
          ? dojo.io.argsFromMap({name:"名稱",value:"值"},"utf"); //will return "value=%E5%80%BC&name=%E5%90%8D%E7%A7%B0", 有中文的話應(yīng)該指定utf格式,否則dojo.string.encodeAscii返回的編碼是很怪異的
          ? dojo.io.argsFromMap({a:1,b:2,c:3}, "utf", "c"); //will return "b=2&a=1&c=3",最后一個參數(shù)可以控制指定名稱的值出現(xiàn)在最后
          ?

          ?

          dojo.io.setIFrameSrc


          ? 設(shè)置IFrame的Src
          ?
          Usage Example:

          ?

          ? dojo.io.setIFrameSrc(dojo.byId("myFrame"), "http://localhost/test.htm"); //myFrame打開指定的網(wǎng)頁
          ? dojo.io.setIFrameSrc(dojo.byId("myFrame"), "http://localhost/test.htm", true); //myFrame打開指定的網(wǎng)頁,并覆蓋瀏覽器的歷史記錄


          ?

          TODO: 補充一個kwArgs的例子,我之前在網(wǎng)上看見過,可是現(xiàn)在無論如何也找不到相關(guān)的頁面了,只好以后在舉例了

          ?


          模塊:dojo.io.BrowserIO

          ?

          基本上就提供了dojo.io.XMLHTTPTransport這個對象


          XMLHTTPTransport一般能夠滿足我們的需求,但是其有幾個限制:它不能傳輸文件,不能夠成功執(zhí)行跨域名的遠程請求,并且不支持 file:// 這樣的協(xié)議


          因此,根據(jù)應(yīng)用要求,我們可能會需要選用其它的transport: dojo.io.IframeTransport, dojo.io.repubsubTranport, dojo.io.ScriptSrcTransport, ShortBusTransport

          ?

          dojo.io.IframeTransport,用法與xmlhttp是一樣的,其優(yōu)點就是可以跨域,不存在任何的安全問題
          如果Request指定的mimetype是text或javascript,返回的內(nèi)容應(yīng)該是放在第一個textarea里的內(nèi)容,如果指定的mimetype是html,則IFrame里的html則是需要的內(nèi)容。因為瀏覽器兼容的原因,IframeTransport不能正確處理返回類型為XML的請求。

          摘自:http://www.cnblogs.com/Icebird/archive/2006/08/07/dojo_study_6.html


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 霍山县| 礼泉县| 卓资县| 中阳县| 永兴县| 丰顺县| 大埔区| 民丰县| 玉树县| 延安市| 新兴县| 伊川县| 杭锦后旗| 金塔县| 大余县| 大宁县| 五华县| 应用必备| 林州市| 新竹县| 湖口县| 五家渠市| 古丈县| 轮台县| 塘沽区| 宁海县| 株洲市| 延安市| 双江| 土默特左旗| 定州市| 宁河县| 方山县| 维西| 香河县| 海淀区| 乐山市| 唐河县| 广水市| 盐山县| 白银市|