隨筆-86  評論-767  文章-3  trackbacks-3

          《Ajax開發簡略》發布以來,經常收到網友的求助郵件。由于eamoi時間有限,不能一一及時解答。建議大家把代碼在此跟帖,能幫助解決問題的朋友也可以隨后提出解決辦法。
          此注。

          posted on 2006-03-09 10:21 eamoi 閱讀(8661) 評論(37)  編輯  收藏 所屬分類: AJAX

          評論:
          # re: Ajax應用問題求助匯總 2006-03-09 10:35 | 冷月宮主
          現在由于在做一個項目,看了《AJAX開發簡略》,因此也想將AJAX應用到項目中,誰知出問題了,在取數據時用responseText可以正常返回數據,但用responseXML返回就出問題了,我本意是想返回XML數據,在前臺再用javascript做處理,但用responseText可以得到返回的數據,用responseXML就是得不到,不過也許是得到了,用getElementsByTagName取不出其中的數據。上面的情況我在weblogic9.1下運行出現的錯誤,同樣代碼,我放到tomcat5.5下做測試就完全正常。另外,我有一個經驗就是“response.setCharacterEncoding("UTF8");”針對weblogic8.1是不認得的編譯無法通過(我用的JB2006),改成weblogic9.1就可以了。

          現在把我的測試文檔貼到下面:

          XML文檔(test.xml):
          <?xml version="1.0" encoding="UTF-8" ?>
          <states>
          <north>
          <state>Minnesota</state>
          <state>Iowa</state>
          <state>North Dakota</state>
          </north>
          <south>
          <state>Texas</state>
          <state>Oklahoma</state>
          <state>Louisiana</state>
          </south>
          <east>
          <state>New York</state>
          <state>North Carolina</state>
          <state>Massachusetts</state>
          </east>
          <west>
          <state>California</state>
          <state>Oregon</state>
          <state>Nevada</state>
          </west>
          </states>

          HTML文件(test.html):
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
          <script type="text/javascript" language="javascript">

          var http_request = false;

          function makeRequest(url) {

          http_request = false;

          if (window.XMLHttpRequest) { // Mozilla, Safari,...
          http_request = new XMLHttpRequest();
          if (http_request.overrideMimeType) {
          http_request.overrideMimeType('text/xml');
          }
          } else if (window.ActiveXObject) { // IE
          try {
          http_request = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
          try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e) {}
          }
          }

          if (!http_request) {
          alert('Giving up :( Cannot create an XMLHTTP instance');
          return false;
          }
          http_request.onreadystatechange = alertContents;
          http_request.open('GET', url, true);
          http_request.send(null);

          }

          function alertContents() {

          if (http_request.readyState == 4) {
          if (http_request.status == 200) {
          alert(http_request.responseText);
          var xmldoc = http_request.responseXML;
          alert(xmldoc);
          var states = xmldoc.getElementsByTagName('state');
          alert(states);
          outputList("輸出結果:", states);
          } else {
          alert('There was a problem with the request.');
          }
          }

          }
          function outputList(title, states) {
          var out = title;
          var currentState = null;
          for(var i = 0; i < states.length; i++) {
          currentState = states[i];
          out = out + "\n- " + currentState.childNodes[0].nodeValue;
          }

          alert(out);
          }
          </script>
          </head>
          <body>
          <span
          style="cursor: pointer; text-decoration: underline"
          onclick="makeRequest('test.xml')">
          Make a request
          </span>
          </body>
          </html>

          希望幫我找找原因,謝謝!  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 13:11 | hwlcsx@sina.com
          我現在有一個簡單的登陸程序有問題需要問一下
          程序列表如下: login.html 一個server.jsp
          login.html中的代碼非常普通.幾乎就是你給出的教程例子.
          當server.jsp驗證出錯誤后使用out.print("xxx")可以將信息返回到login.jsp
          我想問有什么比較完美的做法可以在當server.jsp驗證通過后通知login.jsp該轉向下一個頁面
          也就是說
          <!-- login.jsp -->
          if (http_request.readyState == 4) {
          if (http_request.status == 200) {
          alert(http_request.responseText);
          <!--A-->
          } else {
          alert('There was a problem with the request.');
          }
          }
          就是在A處怎么才能跳轉下一個頁面呢.或者在其他地方跳也可以.只要能跳轉就行.


          我試過在login.jsp加一個<div id="msg"></div>
          在代碼A處寫出
          var obj = document.getElementById("msg");
          obj.innerHTML=http_request.responseText;
          在server.jsp中如果驗證通過的話使用
          out.print("<javascript type=\"text/javascript\">location.replace('index.html')<\script>");

          其實結果就是在login.jsp中
          <div id="msg">
          <javascript type="text/javascript">
          location.replace('index.html')
          <\script>
          </div>

          后來我試過不行.因為頁面沒有理睬剛寫入的腳本.原因我也理解了為什么沒有執行.

          現在就是沒有好方法實現.不知道有沒有可行的方法???謝謝

            回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 13:31 | 胡子魚
          TO: 冷月宮主

          有中文字符的情況,對吧?  回復  更多評論
            
          # re: 與冷月宮主關于1樓問題的MSN實錄 2006-03-09 13:40 | eamoi
          10:42:15 Kezc-- responseText顯示正常,responseXML顯示不出來?
          10:42:31 冷月宮主 是的
          10:42:57 Kezc-- 會不會是utf-8編碼的問題。可能是DOM無法識別你返回的XML文檔。
          10:43:35 冷月宮主 噢,與服務器有關嗎?
          10:43:45 冷月宮主 我只要改文件就行了吧?
          10:43:48 冷月宮主 我試試
          10:44:02 Kezc-- 編碼與服務器有關。建議將XML文檔編碼改為GB2312試試看。
          10:44:24 冷月宮主 好的,我試

          10:46:36 冷月宮主 改成:
          <?xml version="1.0" encoding="GB2312" ?> 也不行

          10:47:27 Kezc-- alert(xmldoc) 是什么結果?
          10:47:53 冷月宮主 object
          10:48:42 冷月宮主 states.length為0
          10:49:32 Kezc-- responseXML返回的結果不是XML文檔,DOM解析不到。
          這種問題我也經常碰到。
          10:49:55 冷月宮主 噢,可能是這個問題
          10:50:00 Kezc-- 也可能是緩存的原因。Ajax使用了緩存機制。
          10:50:09 冷月宮主 那是格式問題還是我用錯了?
          10:50:36 冷月宮主 噢,對于傳的XML文件怎么解決?
          10:50:40 Kezc-- 修改XML文檔編碼方式后,重新啟動一下服務器和瀏覽器試試看。
          10:51:57 冷月宮主 噢,好的,再者,我也發現,你如果改了XML文件的話,必須重新找開瀏覽器才能請出新的XML文件
          10:52:15 冷月宮主 不過我沒有重啟服務器去試
          10:52:21 Kezc-- 是。我覺得是Ajax的緩存機制的問題。
          10:53:28 冷月宮主 在servlet中放入response.setHeader("Cache-Control", "no-cache");就是解決緩存問題的吧?
          10:53:55 Kezc-- 應該是。
          10:54:57 冷月宮主 噢,我文件改為:<?xml version="2.0" encoding="GB2312" ?>

          重啟了weblogic還是不行

          10:55:21 Kezc--奇怪,xml的version不是都為1.0么?
          10:55:54 冷月宮主 不好意思,我剛才隨意改了一下,想試工序

          10:57:49 冷月宮主 現在我至少明白了,表示現在responseXML不是XML文檔,它解析不出來
          10:58:12 Kezc-- 當然。DOM不是萬能的。
          10:59:29 冷月宮主 這個東東很淘氣,問題是在我另一個tomcat服務器上是正常的
          11:00:17 冷月宮主 還有,會不會與javascript部分的dom版本有關?
          11:00:44 冷月宮主 try {
          http_request = new ActiveXObject("Msxml2.XMLHTTP");
          } catch {
          try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
          } catch {}
          }
          }

          11:01:18 Kezc-- 那也應該與瀏覽器有關,跟服務器無關。排除
          11:02:30 冷月宮主 噢,實在沒招了
          11:16:34 Kezc-- 我要在Weblogic里面測試一下。Tomcat是應該沒問題的。代碼我看過了。
          11:17:25 冷月宮主 好的,不知你裝weblogic沒有,如果沒有的話要害你裝了,哈哈
          11:18:04 Kezc-- 有,8.1的
          11:18:05 冷月宮主 對了,我的是weblogic9.1中文版
          11:18:23 Kezc-- 9.1就沒有了。你都測試過了,我就不測試了。
          11:18:32 冷月宮主 噢,我也試試8.1看行不行

          11:29:32 冷月宮主 我試了一下8.1+SP4中文也不行   回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 14:06 | Freedom
          @冷月宮主
          @hwlcsx@sina.com
          可能是在返回數據時沒有設置
          response.setContentType("text/xml");  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 14:36 | 冷月宮主
          to 胡子魚:我上面給出的測試文件沒有中文,上面我給出的測試文件是完整的,你可以存下來試試,幫我看看,謝謝!

          to Freedom:因我是取服務器上的XML文件,你看,是直接傳入的XML文件名,那你這句加在那兒?另外,我也試了Servlet,我是這樣寫的:
          ...
          private static final String CONTENT_TYPE = "text/xml; charset=gb2312";
          ...
          response.setContentType(CONTENT_TYPE);
          ...

          傳回來的結果也是和我上面說我情況一模一樣!

          謝謝你的關注!!!  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 15:21 | 冷月宮主
          一個另類的解決辦法:

          retXml=http_request.responseText;
          var OrgDoc = new ActiveXObject('Microsoft.XMLDOM');
          OrgDoc.async = false;
          OrgDoc.loadXML(retXml);
          var root = OrgDoc.documentElement;
          NodeLists = root.childNodes;
          for (var i=0; i<NodeLists.length; i++)
          {
          Item = NodeLists.item(i);
          //for(int j=0;j<Item.childNodes.length;j++){
          alert(Item.childNodes(0).text);
          //}
          }
            回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 17:32 | 鄒慧明
          @冷月宮主
          @hwlcsx@sina.com
          用WINDOW.OPEN 不行嗎  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-09 19:15 | 冷月宮主
          @鄒慧明
          WINDOW.OPEN?我的代碼可用不到吧?  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-10 10:51 | hwlcsx@sina.com
          window.open不能用,因為是彈出啊.
          我需要的是跳轉.整個頁面的轉向.
          而且重要的是無法判斷什么時候該用obj.innerHTML= responseText什么時候該用window.open...
          因為無法判斷server.jsp返回的數據的具體狀態.他們都是readyState=4&&status=200/////  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-10 11:19 | eamoi-no_login
          to hwlcsx@sina.com

          obj.innerHTML=http_request.responseText;
          的代碼可以更改為:
          eval(http_request.responseText);

          試試看。

          或許有一種更加復雜但是可行的方法:將server.jsp的返回數據組織成為一個XML文檔,這個XML文檔可以包含請求狀態、跳轉目標URL等信息。而在login.jsp中使用responseXML獲取這個XML文檔,根據XML文檔中的相關信息做跳轉或者其他處理。

          PS:建議測試一下看是否可行。

          by:eamoi  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-10 11:26 | eamoi
          如果使用eval(http_request.responseText); ,那么server.jsp的
          out.print("<javascript type=\"text/javascript\">location.replace('index.html')<\script>");
          可以簡單的這么寫:
          out.println("location.replace('index.html');"); ,即去除<script>之類的聲明語句。  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-10 12:10 | hwlcsx@sina.com
          如果使用eval函數,那么我該怎么確定該在什么時候使用obj.innerHTML什么時候該使用eval()呢?
          如果替換的話那么如果驗證錯誤的話,server.jsp返回的提示信息使用eval()函數能否顯示在我指定的<div id="msg"></div>標簽中呢.

          剛才這段時間我想出一個解決辦法.
          就是在server.jsp驗證通過后設置httpresponse.status使他不等于200
          而是等于302/// w3c的httpresponse.status狀態規定302代表類似與response.sendRediect(),也就是重定向.
          那么我的代碼可以改成
          if(httpResponse.status == 200){
          obj.innerHTML = ....;
          }else(httpResponse.status == 302){
          location.replace(request.responseText);
          }
          因為可以在驗證通過后將要跳轉的頁面地址寫入request.responseText..
          還可以起到隱藏真實重定向地址的好處.
          還同時想到了好幾種方法,還不知道那種可行那種更好用... -_-!  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-10 12:18 | hwlcsx@sina.com
          將server.jsp的返回數據組織成為一個XML文檔...這個思路我想屏棄掉.
          因為登陸是一個要求速度的操作請求.在安全的前提下越快越好.
          如果采用解析xml的方式將會同時增加客戶端的的解析速度和服務端生成相應xml的速度.當然其實速度是可以很快的,慢只是相對的.
          所以優先考慮其他處理方式.
          謝謝你的幫助...  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-13 14:04 | hwlcsx@sina.com
          試完了.一半失敗一般成功.
          因為程序沒有象我當初預想的那樣進行下去.
          在server.jsp中使用response.setStatus(302);之后似乎tomcat進行了一些處理,響應流并沒有直接返回到login.jsp,好象被tomcat處理了一下,所以httpResponse對象沒有拿到正確的status.而實際上status等于12150,并不是302.最后嘗試結果使用response.setStatus(206)可以將響應流直接返回到login.jsp.但是login.jsp中的javascript不能使用httpResponse.status ==206),因為這個標志也是得不到的.
          最后改成
          if(httpResponse.status == 200){
          obj.innerHTML = ....;
          }else{
          nextpage(); //B
          }
          在//B方法中可以使用http_request.responseText得到server.jsp返回的信息.并且進行跳轉.... 雖然實現了功能實在是無奈的辦法... 再嘗試其他的吧.

          那位仁兄有好的想法還望轉告一聲  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-23 01:29 | 寒心月
          你好,我想知道send方法的是怎么使用的。  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-26 20:18 | 冷月宮主
          關于我的那個問題,現在的狀況是:如果那樣取XML文件的話在tomcat下確實是可以取,但在weblogic下怎么也取不出來,也就是取出來的,它不認為那是一樣XML文檔無法解析,也是我懶,我沒有直接servlet直接來生成一個XML格式的文檔測試,實驗證明,如果那個XML文檔是在servlet中用out.write()的形式輸出的話在頁面上就可以正常取了,原因沒搞明白,但問題解決了,實際上,我也正是要在servlet中生成XML文檔,但當時是為了測試才拿一個XML文件來做,就卡在那兒了,唉。。。

          謝謝各位的關注,也謝謝blog的主人!!!  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-31 13:46 | eDust
          字符編碼問題!  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-31 14:15 | eamoi
          關于Ajax中文編碼問題,在《Ajax開發精要:概念、案例與框架》中有專門的章節介紹,并提供相應的解決方案。  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-03-31 22:49 | 陳秦
          不錯,不錯,學習中。。。。  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-04-25 12:48 | Winter
          通過ajax客戶端調用web服務,獲得返回值,已經成功。返回值為一個字段和一個xml
          以上操作已成功。現在的問題是:想將返回的xml轉為一張表格。頁面代碼如下:
          <html>
          <head>
          <script type="text/javascript" src="scripts/prototype.js"></script>
          <script type="text/javascript" src="scripts/ws.js"></script>
          <script type="text/javascript">
          function sayHello(name, container) {
          var call = new WS.Call('/AjaxWS/services/HelloWorld');
          var nsuri = 'http://example';
          var qn_op = new WS.QName('sayHello',nsuri);
          var qn_op_resp = new WS.QName('sayHelloResponse',nsuri);
          call.invoke_rpc(
          qn_op,
          new Array(
          {name:'name',value:name}
          ),null,
          function(call,envelope) {
          var ret =
          envelope.get_body().get_all_children()[0].get_all_children()[0].get_value();
          container.innerHTML = ret;
          $('soap').innerHTML = arguments[2].escapeHTML();
          }
          );
          }
          </script>
          <style>
          body {
          font-family: verdana;
          }
          #container {
          margin: 10pt;
          border: 1pt solid black;
          padding: 2pt;
          }
          #result {
          padding: 5pt;
          background-color: #eeeeee;
          }
          #soap {
          padding: 5pt;
          background-color: #eeeeee;
          font-size: 10pt;
          }
          </style>
          </head>
          <body>
          <input name="name" id="name" />
          <input value="Invoke the Web Service"
          type="button"
          onclick="sayHello($('name').value,$('result'))" />
          <div id="container">Result:
          <div id="result">
          </div>
          <div id="soap">
          </div>
          </div>
          </body>
          </html>

          其中用到兩個.js文件,見下文  回復  更多評論
            
          # 接上文 2006-04-25 12:51 | Winter
          第一個ws.js,摘要代碼如下:

          var XML = {
          createDocumentQName : function(qname) {
          return XML.createDocument(qname.namespace,qname.value_of());
          },
          createDocument : function(namespace,nodename) {
          return Try.these(
          function() {
          var doc = new ActiveXObject('Msxml2.XMLDOM');
          var root = XML.createElementNS(doc, nodename, namespace);
          doc.documentElement = root;
          return doc;
          },
          function() {
          var doc = new ActiveXObject('Microsoft.XMLDOM')
          var root = XML.createElementNS(doc, nodename, namespace);
          doc.documentElement = root;
          return doc;
          },
          function() {
          return document.implementation.createDocument(
          namespace,
          nodename,
          null)
          }
          ) || false;
          },
          createElementNS : function(document,nodename,namespace) {
          var el = Try.these(
          function() {
          var el = null;
          if (namespace) {
          el = document.createNode(1,nodename,namespace);
          } else {
          el = document.createNode(1,nodename,"");
          }
          return el;
          },
          function() {
          var el = null;
          if (namespace) {
          el = document.createElementNS(namespace,nodename);
          } else {
          el = document.createElement(nodename);
          }
          return el;
          }
          ) || false;
          return el;
          },
          createElementQName : function(document,qname) {
          return XML.createElementNS(document,qname.value_of(),qname.namespace);
          },
          createAttributeNS : function(document,nodename,namespace,value) {
          var attr = Try.these(
          function() { return document.createNode(2,nodename,namespace)},
          function() { return document.createAttributeNS(namespace,nodename)}
          ) || false;
          attr.nodeValue = value;
          return attr;
          },
          createAttributeQName : function(document,qname,value) {
          return XML.createAttributeNS(document,qname.value_of(),qname.namespace,value);
          },
          createAttribute : function(document,nodename,value) {
          var attr = Try.these(
          function() { return document.createNode(2, nodename)},
          function() { return document.createAttribute(nodename)}
          ) || false;
          attr.nodeValue = value;
          return attr;
          },
          createText : function(document,value) {
          var node = Try.these(
          function() { return document.createTextNode(value) }
          ) || false;
          return node;
          },
          createCDATA : function(document,value) {
          var node = Try.these(
          function() { return document.createCDATASection(value) }
          ) || false;
          return node;
          },
          getElementsByQName : function(element, qname) {
          var nl = null;
          if(!element.getElementsByTagNameNS) {
          nl = new Array();
          var nodes = element.getElementsByTagName(qname.value_of());
          for (var n = 0; n < nodes.length; n++) {
          if (nodes[n].namespaceURI == qname.namespace) {
          nl.push(nodes[n]);
          }
          }
          } else {
          nl = element.getElementsByTagNameNS(qname.namespace,qname.localpart);
          }
          return nl;
          }
          }  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-04-25 12:52 | Winter
          SOAP.Envelope = Class.create();
          SOAP.Envelope.QNAME = new WS.QName('Envelope',SOAP.URI);
          SOAP.Envelope.prototype = (new SOAP.Element()).extend({
          initialize : function() {
          var element = arguments[0];
          if (!element) {
          var document =
          XML.createDocumentQName(SOAP.Envelope.QNAME);
          element = document.documentElement;
          }
          this.initialize_internal(element);
          },
          set_value : null,
          get_value : null,
          create_child : null,
          create_header : function() {
          if (!this.has_header()) {
          var doc = this.element.ownerDocument;
          var el = XML.createElementQName(doc, SOAP.Header.QNAME);
          if (this.element.firstChild) {
          this.element.insertBefore(el, this.element.firstChild);
          } else {
          this.element.appendChild(el);
          }
          var ret = new SOAP.Header(el);
          return ret;
          } else {
          return this.get_header();
          }
          },
          get_header : function() {
          var val = null;
          for (var n = 0; n < this.element.childNodes.length; n++) {
          if (this.element.childNodes[n].nodeType == 1) {
          var el = this.element.childNodes[n];
          if (SOAP.Header.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
          val = new SOAP.Header(el);
          break;
          }
          }
          }
          return val;
          },
          has_header : function() {
          var val = null;
          for (var n = 0; n < this.element.childNodes.length; n++) {
          if (this.element.childNodes[n].nodeType == 1) {
          var el = this.element.childNodes[n];
          if (SOAP.Header.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
          val = true;
          break;
          }
          }
          }
          return val;
          },
          create_body : function() {
          if (!this.has_body()) {
          var doc = this.element.ownerDocument;
          var el = XML.createElementQName(doc, SOAP.Body.QNAME);
          this.element.appendChild(el);
          var ret = new SOAP.Body(el);
          return ret;
          } else {
          return this.get_body();
          }
          },
          get_body : function() {
          var val = null;
          for (var n = 0; n < this.element.childNodes.length; n++) {
          if (this.element.childNodes[n].nodeType == 1) {
          var el = this.element.childNodes[n];
          if (SOAP.Body.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
          val = new SOAP.Body(el);
          break;
          }
          }
          }
          return val;
          },
          has_body : function() {
          var val = null;
          for (var n = 0; n < this.element.childNodes.length; n++) {
          if (this.element.childNodes[n].nodeType == 1) {
          var el = this.element.childNodes[n];
          if (SOAP.Body.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
          val = true;
          break;
          }
          }
          }
          return val;
          }
          });  回復  更多評論
            
          # re: Ajax應用問題求助匯總 2006-05-10 17:30 | gunson
          @冷月宮主

          我的客戶端請求一個url,該url將打印一個xml內容,但是在客戶端接受時,使用responseXML無法解析.但是responseText可以得到這個xml內容。

          還是這個方法好用,先定一個DOM對象,然后使用loadXML方法將responseText的內容加載進去,這樣這個DOM就可以對xml內容進行解析了~~
          好用!!

          沾了個光,正好為這個問題發愁呢?

          大家一起加油吧!!!  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-05-12 08:58 | steven
          新增分頁查詢案例(包括《Ajax開發精要》中的兩個綜合案例) 2006-05-11 16:38 | steven
          我下載了包包部署好后,運行正常,但運行簡單的Ajax留言簿時,多留幾次言就報錯,提示“您請求的頁面有異常”
          Tomcat 就死掉了
          org.apache.jasper.JasperException: Unable to compile class for JSP

          An error occurred at line: -1 in the jsp file: null

          Generated servlet error:
          [javac] Compiling 1 source file

          E:\Tomcat4127\temp\message\ajaxMessage_jsp.java:7: package com.eamoi.ajax does not exist
          import com.eamoi.ajax.*;   回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-05-28 21:56 | showsen
          作者你好,我今天剛買了你的書《Ajax開發精要》,你可否給我書中的代碼?  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-05-29 08:15 | eamoi
          書中的源碼可以在博文視點公司的網站上下載得到。地址:
          http://www.broadview.com.cn

          http://www.broadview.com.cn/download.aspx?bookid={E7A05E97-9916-48FC-9C31-91836A0A7ACB}  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-06-21 16:53 | czd000@163.com
          你好,我是ajax初學者
          ,看了您寫的書收獲很大,有一個問題想問你。在客戶端的html頁面中用ajax發送請求到一個jsp頁面,jsp頁面處理完后用out.println(“This is my jsp page”)返回結果,在客戶端頁面得到的responseText為什么包含html代碼?如下This is my jsp page才是我應該得到的結果,情給予指點,謝謝!!
          <html>
          <head>
          <base href="http://localhost:8080/tteesstt/">

          <title>My JSP 'test.jsp' starting page</title>

          </head>

          <body>
          This is my JSP page.

          </body>
          </html>
            回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-06-21 16:56 | czd000@163.com
          如何才能在客戶端得到的reaponseText中的內容只是This is my JSP page這一句,而不包含其他的html代碼?  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-07-12 15:16 | gary
          諸位大哥,小弟剛剛接觸ajax,有個小問題,想請教各位專家,希望大家幫幫忙
          我聲明XMLHttpRequest后調用另一個服務器端代碼,但是status碼提示為0
          不是回應的200,這是為什么啊?現將主要客戶端代碼寫在下面:
          <script type="text/javascript">
          var xmlHttp;
          function createXMLHttpRequest()
          {
          if (window.ActiveXObject)
          {
          xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
          }
          else if (window.XMLHttpRequest)
          {
          xmlHttp = new XMLHttpRequest();
          }
          }

          function handleStateChange()
          {
          if (xmlHttp.readyState == 4)
          {
          if (xmlHttp.status == 200)
          {
          parseResults();
          }
          }
          }


          function inputTest()
          {
          createXMLHttpRequest();
          var queryString = "GetAndPostExample?timeStamp=" + new Date().getTime();
          xmlHttp.onreadystatechange = handleStateChange;
          xmlHttp.open("GET", queryString, true);
          xmlHttp.send(null);

          var responsetest = xmlHttp.readyState + "and" + xmlHttp.status + "\r";
          var responseDiv = document.getElementById("serverResponse");
          var responseText = document.createTextNode(responsetest);
          responseDiv.appendChild(responseText);
          }
          </script>  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-08-16 14:45 | sunson
          為什么在ajax中引用Servlet時老是出現404錯誤?  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-08-16 14:45 | sunson
          為什么在ajax中引用Servlet時老是出現404錯誤?  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-08-16 14:45 | sunson
          為什么在ajax中引用Servlet時老是出現404錯誤?  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-09-03 06:07 | 邱俊
          您好,我用ajax+xml+asp 做blog是遇到這樣的問題
          asp返回一個xml文件,在客戶端用js解析,
          返回的xml文件無法解析,又沒有報錯,xml是用的responseXML得到的,用responseText測試知道xml文件已經返回到客戶端,
          xml文件:
          <?xml version="1.0" encoding="gb2312" ?>
          <articles>
          <className>INDEX</className>
          <article>
          <title>《暫停的故事》我很喜歡聽的一首歌</title>
          <pubdate>Pubdate : 2006-6-13 23:41:30|Count : 14</pubdate>
          </article>
          </articles>

          http_request.responseXML.getElementsByTagName("article").length 得到的值總是0,應該是1才對,
          不知道是什么原因,望請賜教!!
            回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2006-09-03 06:13 | 邱俊
          接上文,當不采用asp返回的xml文件,直接讀已經存在的而且內容一樣xml文件時,又全部正確。@冷月宮主
            回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2007-01-25 17:52 | xu may
          用ajax,返回readyState為1,測試了一下,當readyState為1,2,3,4時,分別彈出警告,報告readyState的狀態,是什么原因導致不直接到4?  回復  更多評論
            
          # re: Ajax應用問題求助匯總&《Ajax開發精要》反饋 2008-02-29 17:33 | 我愛百合
          我以循環方式請求XMLHttpRequest(AJAX)
          現在遇到一個問題
          第一次請求的數據還沒有返回,我第二次請求就發出了(第二次請求和上一次請求的結果有關)

          大家說說這種情況該怎么處理??   回復  更多評論
            
          主站蜘蛛池模板: 周宁县| 三原县| 乡宁县| 叙永县| 阳西县| 石棉县| 眉山市| 湟源县| 韩城市| 卫辉市| 华坪县| 克山县| 分宜县| 宣汉县| 慈溪市| 如东县| 安顺市| 湘乡市| 云阳县| 吴桥县| 襄城县| 兖州市| 镇安县| 南木林县| 奉节县| 奉化市| 天长市| 绥德县| 黎平县| 阿鲁科尔沁旗| 荣成市| 保定市| 泸水县| 辽中县| 平远县| 三穗县| 女性| 饶阳县| 宜兴市| 潍坊市| 武穴市|