<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-86  評(píng)論-767  文章-3  trackbacks-3

    《Ajax開(kāi)發(fā)簡(jiǎn)略》發(fā)布以來(lái),經(jīng)常收到網(wǎng)友的求助郵件。由于eamoi時(shí)間有限,不能一一及時(shí)解答。建議大家把代碼在此跟帖,能幫助解決問(wèn)題的朋友也可以隨后提出解決辦法。
    此注。

    posted on 2006-03-09 10:21 eamoi 閱讀(8656) 評(píng)論(37)  編輯  收藏 所屬分類(lèi): AJAX

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

    現(xiàn)在把我的測(cè)試文檔貼到下面:

    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("輸出結(jié)果:", 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>

    希望幫我找找原因,謝謝!  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-09 13:11 | hwlcsx@sina.com
    我現(xiàn)在有一個(gè)簡(jiǎn)單的登陸程序有問(wèn)題需要問(wèn)一下
    程序列表如下: login.html 一個(gè)server.jsp
    login.html中的代碼非常普通.幾乎就是你給出的教程例子.
    當(dāng)server.jsp驗(yàn)證出錯(cuò)誤后使用out.print("xxx")可以將信息返回到login.jsp
    我想問(wèn)有什么比較完美的做法可以在當(dāng)server.jsp驗(yàn)證通過(guò)后通知login.jsp該轉(zhuǎn)向下一個(gè)頁(yè)面
    也就是說(shuō)
    <!-- 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處怎么才能跳轉(zhuǎn)下一個(gè)頁(yè)面呢.或者在其他地方跳也可以.只要能跳轉(zhuǎn)就行.


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

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

    后來(lái)我試過(guò)不行.因?yàn)轫?yè)面沒(méi)有理睬剛寫(xiě)入的腳本.原因我也理解了為什么沒(méi)有執(zhí)行.

    現(xiàn)在就是沒(méi)有好方法實(shí)現(xiàn).不知道有沒(méi)有可行的方法???謝謝

      回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-09 13:31 | 胡子魚(yú)
    TO: 冷月宮主

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

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

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

    重啟了weblogic還是不行

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

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

    11:01:18 Kezc-- 那也應(yīng)該與瀏覽器有關(guān),跟服務(wù)器無(wú)關(guān)。排除
    11:02:30 冷月宮主 噢,實(shí)在沒(méi)招了
    11:16:34 Kezc-- 我要在Weblogic里面測(cè)試一下。Tomcat是應(yīng)該沒(méi)問(wèn)題的。代碼我看過(guò)了。
    11:17:25 冷月宮主 好的,不知你裝weblogic沒(méi)有,如果沒(méi)有的話(huà)要害你裝了,哈哈
    11:18:04 Kezc-- 有,8.1的
    11:18:05 冷月宮主 對(duì)了,我的是weblogic9.1中文版
    11:18:23 Kezc-- 9.1就沒(méi)有了。你都測(cè)試過(guò)了,我就不測(cè)試了。
    11:18:32 冷月宮主 噢,我也試試8.1看行不行

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

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

    傳回來(lái)的結(jié)果也是和我上面說(shuō)我情況一模一樣!

    謝謝你的關(guān)注!!!  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-09 15:21 | 冷月宮主
    一個(gè)另類(lèi)的解決辦法:

    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);
    //}
    }
      回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-09 17:32 | 鄒慧明
    @冷月宮主
    @hwlcsx@sina.com
    用WINDOW.OPEN 不行嗎  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-09 19:15 | 冷月宮主
    @鄒慧明
    WINDOW.OPEN?我的代碼可用不到吧?  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-10 10:51 | hwlcsx@sina.com
    window.open不能用,因?yàn)槭菑棾霭?
    我需要的是跳轉(zhuǎn).整個(gè)頁(yè)面的轉(zhuǎn)向.
    而且重要的是無(wú)法判斷什么時(shí)候該用obj.innerHTML= responseText什么時(shí)候該用window.open...
    因?yàn)闊o(wú)法判斷server.jsp返回的數(shù)據(jù)的具體狀態(tài).他們都是readyState=4&&status=200/////  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-10 11:19 | eamoi-no_login
    to hwlcsx@sina.com

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

    試試看。

    或許有一種更加復(fù)雜但是可行的方法:將server.jsp的返回?cái)?shù)據(jù)組織成為一個(gè)XML文檔,這個(gè)XML文檔可以包含請(qǐng)求狀態(tài)、跳轉(zhuǎn)目標(biāo)URL等信息。而在login.jsp中使用responseXML獲取這個(gè)XML文檔,根據(jù)XML文檔中的相關(guān)信息做跳轉(zhuǎn)或者其他處理。

    PS:建議測(cè)試一下看是否可行。

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

    剛才這段時(shí)間我想出一個(gè)解決辦法.
    就是在server.jsp驗(yàn)證通過(guò)后設(shè)置httpresponse.status使他不等于200
    而是等于302/// w3c的httpresponse.status狀態(tài)規(guī)定302代表類(lèi)似與response.sendRediect(),也就是重定向.
    那么我的代碼可以改成
    if(httpResponse.status == 200){
    obj.innerHTML = ....;
    }else(httpResponse.status == 302){
    location.replace(request.responseText);
    }
    因?yàn)榭梢栽隍?yàn)證通過(guò)后將要跳轉(zhuǎn)的頁(yè)面地址寫(xiě)入request.responseText..
    還可以起到隱藏真實(shí)重定向地址的好處.
    還同時(shí)想到了好幾種方法,還不知道那種可行那種更好用... -_-!  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-10 12:18 | hwlcsx@sina.com
    將server.jsp的返回?cái)?shù)據(jù)組織成為一個(gè)XML文檔...這個(gè)思路我想屏棄掉.
    因?yàn)榈顷懯且粋€(gè)要求速度的操作請(qǐng)求.在安全的前提下越快越好.
    如果采用解析xml的方式將會(huì)同時(shí)增加客戶(hù)端的的解析速度和服務(wù)端生成相應(yīng)xml的速度.當(dāng)然其實(shí)速度是可以很快的,慢只是相對(duì)的.
    所以?xún)?yōu)先考慮其他處理方式.
    謝謝你的幫助...  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-13 14:04 | hwlcsx@sina.com
    試完了.一半失敗一般成功.
    因?yàn)槌绦驔](méi)有象我當(dāng)初預(yù)想的那樣進(jìn)行下去.
    在server.jsp中使用response.setStatus(302);之后似乎tomcat進(jìn)行了一些處理,響應(yīng)流并沒(méi)有直接返回到login.jsp,好象被tomcat處理了一下,所以httpResponse對(duì)象沒(méi)有拿到正確的status.而實(shí)際上status等于12150,并不是302.最后嘗試結(jié)果使用response.setStatus(206)可以將響應(yīng)流直接返回到login.jsp.但是login.jsp中的javascript不能使用httpResponse.status ==206),因?yàn)檫@個(gè)標(biāo)志也是得不到的.
    最后改成
    if(httpResponse.status == 200){
    obj.innerHTML = ....;
    }else{
    nextpage(); //B
    }
    在//B方法中可以使用http_request.responseText得到server.jsp返回的信息.并且進(jìn)行跳轉(zhuǎn).... 雖然實(shí)現(xiàn)了功能實(shí)在是無(wú)奈的辦法... 再?lài)L試其他的吧.

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

    謝謝各位的關(guān)注,也謝謝blog的主人!!!  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-31 13:46 | eDust
    字符編碼問(wèn)題!  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-31 14:15 | eamoi
    關(guān)于Ajax中文編碼問(wèn)題,在《Ajax開(kāi)發(fā)精要:概念、案例與框架》中有專(zhuān)門(mén)的章節(jié)介紹,并提供相應(yīng)的解決方案。  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-03-31 22:49 | 陳秦
    不錯(cuò),不錯(cuò),學(xué)習(xí)中。。。。  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-04-25 12:48 | Winter
    通過(guò)ajax客戶(hù)端調(diào)用web服務(wù),獲得返回值,已經(jīng)成功。返回值為一個(gè)字段和一個(gè)xml
    以上操作已成功。現(xiàn)在的問(wèn)題是:想將返回的xml轉(zhuǎn)為一張表格。頁(yè)面代碼如下:
    <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>

    其中用到兩個(gè).js文件,見(jiàn)下文  回復(fù)  更多評(píng)論
      
    # 接上文 2006-04-25 12:51 | Winter
    第一個(gè)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;
    }
    }  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 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;
    }
    });  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總 2006-05-10 17:30 | gunson
    @冷月宮主

    我的客戶(hù)端請(qǐng)求一個(gè)url,該url將打印一個(gè)xml內(nèi)容,但是在客戶(hù)端接受時(shí),使用responseXML無(wú)法解析.但是responseText可以得到這個(gè)xml內(nèi)容。

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

    沾了個(gè)光,正好為這個(gè)問(wèn)題發(fā)愁呢?

    大家一起加油吧!!!  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-05-12 08:58 | steven
    新增分頁(yè)查詢(xún)案例(包括《Ajax開(kāi)發(fā)精要》中的兩個(gè)綜合案例) 2006-05-11 16:38 | steven
    我下載了包包部署好后,運(yùn)行正常,但運(yùn)行簡(jiǎn)單的Ajax留言簿時(shí),多留幾次言就報(bào)錯(cuò),提示“您請(qǐng)求的頁(yè)面有異常”
    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.*;   回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-05-28 21:56 | showsen
    作者你好,我今天剛買(mǎi)了你的書(shū)《Ajax開(kāi)發(fā)精要》,你可否給我書(shū)中的代碼?  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-05-29 08:15 | eamoi
    書(shū)中的源碼可以在博文視點(diǎn)公司的網(wǎng)站上下載得到。地址:
    http://www.broadview.com.cn

    http://www.broadview.com.cn/download.aspx?bookid={E7A05E97-9916-48FC-9C31-91836A0A7ACB}  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-06-21 16:53 | czd000@163.com
    你好,我是ajax初學(xué)者
    ,看了您寫(xiě)的書(shū)收獲很大,有一個(gè)問(wèn)題想問(wèn)你。在客戶(hù)端的html頁(yè)面中用ajax發(fā)送請(qǐng)求到一個(gè)jsp頁(yè)面,jsp頁(yè)面處理完后用out.println(“This is my jsp page”)返回結(jié)果,在客戶(hù)端頁(yè)面得到的responseText為什么包含html代碼?如下This is my jsp page才是我應(yīng)該得到的結(jié)果,情給予指點(diǎn),謝謝!!
    <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>
      回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-06-21 16:56 | czd000@163.com
    如何才能在客戶(hù)端得到的reaponseText中的內(nèi)容只是This is my JSP page這一句,而不包含其他的html代碼?  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-07-12 15:16 | gary
    諸位大哥,小弟剛剛接觸ajax,有個(gè)小問(wèn)題,想請(qǐng)教各位專(zhuān)家,希望大家?guī)蛶兔?
    我聲明XMLHttpRequest后調(diào)用另一個(gè)服務(wù)器端代碼,但是status碼提示為0
    不是回應(yīng)的200,這是為什么啊?現(xiàn)將主要客戶(hù)端代碼寫(xiě)在下面:
    <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>  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-08-16 14:45 | sunson
    為什么在ajax中引用Servlet時(shí)老是出現(xiàn)404錯(cuò)誤?  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-08-16 14:45 | sunson
    為什么在ajax中引用Servlet時(shí)老是出現(xiàn)404錯(cuò)誤?  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-08-16 14:45 | sunson
    為什么在ajax中引用Servlet時(shí)老是出現(xiàn)404錯(cuò)誤?  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-09-03 06:07 | 邱俊
    您好,我用ajax+xml+asp 做blog是遇到這樣的問(wèn)題
    asp返回一個(gè)xml文件,在客戶(hù)端用js解析,
    返回的xml文件無(wú)法解析,又沒(méi)有報(bào)錯(cuò),xml是用的responseXML得到的,用responseText測(cè)試知道xml文件已經(jīng)返回到客戶(hù)端,
    xml文件:
    <?xml version="1.0" encoding="gb2312" ?>
    <articles>
    <className>INDEX</className>
    <article>
    <title>《暫停的故事》我很喜歡聽(tīng)的一首歌</title>
    <pubdate>Pubdate : 2006-6-13 23:41:30|Count : 14</pubdate>
    </article>
    </articles>

    http_request.responseXML.getElementsByTagName("article").length 得到的值總是0,應(yīng)該是1才對(duì),
    不知道是什么原因,望請(qǐng)賜教!!
      回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2006-09-03 06:13 | 邱俊
    接上文,當(dāng)不采用asp返回的xml文件,直接讀已經(jīng)存在的而且內(nèi)容一樣xml文件時(shí),又全部正確。@冷月宮主
      回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2007-01-25 17:52 | xu may
    用ajax,返回readyState為1,測(cè)試了一下,當(dāng)readyState為1,2,3,4時(shí),分別彈出警告,報(bào)告readyState的狀態(tài),是什么原因?qū)е虏恢苯拥??  回復(fù)  更多評(píng)論
      
    # re: Ajax應(yīng)用問(wèn)題求助匯總&《Ajax開(kāi)發(fā)精要》反饋 2008-02-29 17:33 | 我愛(ài)百合
    我以循環(huán)方式請(qǐng)求XMLHttpRequest(AJAX)
    現(xiàn)在遇到一個(gè)問(wèn)題
    第一次請(qǐng)求的數(shù)據(jù)還沒(méi)有返回,我第二次請(qǐng)求就發(fā)出了(第二次請(qǐng)求和上一次請(qǐng)求的結(jié)果有關(guān))

    大家說(shuō)說(shuō)這種情況該怎么處理??   回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 未满十八18禁止免费无码网站| 最近中文字幕完整免费视频ww| 亚洲一区免费在线观看| 在线观看亚洲免费视频| 日本红怡院亚洲红怡院最新| 久久久国产亚洲精品| 成全视成人免费观看在线看| 青青青国产在线观看免费 | 久久激情亚洲精品无码?V| 亚洲欧洲日韩在线电影| 水蜜桃视频在线观看免费| 91免费在线播放| 国产亚洲精品影视在线产品| 亚洲中文久久精品无码1| 久久久久久av无码免费看大片| 欧美男同gv免费网站观看| 国产精品亚洲аv无码播放| 亚洲欧美成aⅴ人在线观看| 一级毛片全部免费播放| 亚洲av无码乱码在线观看野外| 亚洲成a人片在线观看播放| 一级有奶水毛片免费看| 永久黄网站色视频免费| 亚洲自偷精品视频自拍| 国产精品永久免费视频| 免费观看a级毛片| 亚洲男人电影天堂| 久久九九久精品国产免费直播| 日韩视频免费在线| 亚洲激情视频网站| 在线观看免费视频一区| 在线视频免费国产成人| 亚洲午夜精品在线| 色猫咪免费人成网站在线观看| 亚洲国产aⅴ综合网| 亚洲精品无码专区久久| 99久久免费国产香蕉麻豆| 国产AV无码专区亚洲AV男同| 青青草97国产精品免费观看| 免费看www视频| 久久亚洲最大成人网4438|