2010-10-15 49 views
1

下面的腳本完全適用於IE瀏覽器中的XML響應。但似乎我不知道如何在Firefox或Chorme上運行。嘗試一些修改,但仍然無法運行它。請幫助。新的XMLHttpRequest無法在Firefox上運行

<script type="text/javascript" language="javascript"> 
var xmlhttp; 
var timeStamp; 

var currentTime = new Date() 
var month = currentTime.getMonth() + 1 
var day = currentTime.getDate() //remove the + 1 afterwards 
var year = currentTime.getFullYear() 
var hour = currentTime.getHours() 
var minutes = currentTime.getMinutes() 
var second = currentTime.getSeconds() + 1 


timeStamp = day + "/" + month + "/" + year + " " + hour + ":" + minutes + ":" + second; 



function on_click() 

{ 



    var xmlToSend = "<?xml version='1.0' encoding='utf-8'?>"; 
    xmlToSend += "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "; 
    xmlToSend += "xmlns:xsd='http://www.w3.org/2001/XMLSchema' "; 
    xmlToSend += "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"; 
    xmlToSend += "<soap:Body><Welcomescreen Sender='SENDERDDRESS' TimeStamp='28/10/2009 16:49:31' Type='1' Workshop='SG' RequireAppointmentDate='2010/01/04' xmlns='http://www.SENDERDDRESS.com/integration'/>"; 
    xmlToSend += "</soap:Body></soap:Envelope>"; 

    /


    var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmldoc.loadXML(xmlToSend); 


    if (window.XMLHttpRequest) 
     {//code 
    for IE7 + , Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
} else { // code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 


xmlhttp.onreadystatechange = state_Change; 

xmlhttp.open("POST", "http://SENDERDDRESS:4509/resd", false); 
xmlhttp.setRequestHeader("SOAPAction", "http://www.mhe.com/SRP/requestVinRequest"); 
xmlhttp.setRequestHeader("Content-Type", "text/xml"); 
xmlhttp.setRequestHeader("User-Agent", "Jakarta Commons-HttpClient/3.0.1"); 
xmlhttp.setRequestHeader("Host", "SENDERDDRESS:4509"); 
xmlhttp.setRequestHeader("Content-Length", "391"); 
xmlhttp.send(xmldoc); 



var objResponse = document.getElementsByTagName("Appointment"); 

objResponse.innerText = xmlhttp.responseXML.xml; 

} 

function state_Change() 

{ 
    if (xmlhttp.readyState == 4) { 
     if (xmlhttp.status == 200) { 
      txt = "<table align='right' border='1' width='400'><tr><th><font color='#d9d7d7' size='4' face='verdana'>Time</font></th><th><font color='#d9d7d7' size='4' face='verdana'>Plate No.</font></th><th><font color='#d9d7d7' size='4' face='verdana'>Status</font></th></tr>"; 
      x = xmlhttp.responseXML.documentElement.getElementsByTagName("Appointment"); 
      for (i = 0; i < x.length; i++) { 

       xx = x[i].getElementsByTagName("AppointmentTime"); { 
        try { 
         txt = txt + "<td><font size = 5>" + xx[0].firstChild.nodeValue + "</font></td>"; 
        } catch (er) { 
         txt = txt + "<td> </td>"; 
        } 
       } 

       xx = x[i].getElementsByTagName("NumberPlate"); { 
        try { 
         txt = txt + "<td><font size = 5>" + xx[0].firstChild.nodeValue + "</font></td>"; 
        } catch (er) { 
         txt = txt + "<td> </td>"; 
        } 
       } 

       xx = x[i].getElementsByTagName("statusCode"); { 
        try { 
         txt = txt + "<td><font size = 5>" + xx[0].firstChild.nodeValue + "</font></td>"; 
        } catch (er) { 
         txt = txt + "<td> </td>"; 
        } 
       } 
       txt = txt + "</tr>"; 
      } 
      txt = txt + "</table>"; 
      document.getElementById('txtCDInfo').innerHTML = txt; 
     } else 

     { 


     } 

    } 

} 
</script> 
+1

定義「不起作用」。任何錯誤消息? – 2010-10-15 08:46:40

回答

2

我看到兩個問題。一個是你有一個流浪/只是一系列xmlToSend +=線,這是一個語法錯誤之後,再有就是:

var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 

ActiveXObject不規範,這是一個IE特定的事情。與你使用它的其他地方不同,該線不是有條件的。

您可以直接將xmlToSend字符串直接傳遞到XMLHttpRequest#sendlink),您不需要先將XML文檔製作出來。它只需要再次轉回到一個字符串發送。

如果你真的實際創建一個XML文檔對象,您可以在兼容的瀏覽器使用DOMImplementation#createDocument(例如,document.implementation.createDocument)。

題外話:在Ajax領域(以及其他許多領域),JavaScript庫可以讓你的生活變得更輕鬆。類似jQuery,Closure,Prototype,YUIany of several others可能會爲您節省一些時間。

+0

T.J,我已經移出了特定的IE ActiveXObject,只使用XMLHttpRequest來傳遞和在IE中工作,但仍然不在FF中。然而,我在兩個瀏覽器輸出上做了一個TCP跟蹤,發現FF輸出中的XML頭部模式不同,服務器響應也是錯誤的。 – Arif 2010-10-16 05:43:31

+0

輸出發送IE:POST/domain HTTP/1.1 Accept:*/* Accept-Language:en-us Referer:http://localhost/appointment/welcome.html soapaction:http://www.domain.com/SRP/ requestVinRequest Content-Type:text/xml User-Agent:Jakarta Commons-HttpClient/3.0.1 Accept-Encoding:gzip,deflate主機:localhost:8080內容長度:415連接:Keep-Alive緩存控制:no-cache – Arif 2010-10-16 05:48:18

+0

輸出發送FF:OPTIONS/domain HTTP/1.1 Host:localhost:8080 User-Agent:Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10)Gecko/20100914 AskTbARS/3.8。 0.12304 Firefox/3.6.10(.NET CLR 3.5.30729) 接受:text/html,application/xhtml + xml,application/xml; q = 0.9,*/*; q = 0.8 Accept-Language:zh-cn ,en; q = 0.5 Accept-Encoding:gzip,deflate Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7 保持活動:115 連接:保持活躍 產地:HTTP://本地主機 訪問控制請求-方法:POST 訪問控制請求報頭:SOAPAction的,用戶代理 – Arif 2010-10-16 05:50:28

相關問題