4

私はXMLHTTPRequest.openメソッドにアクセスしようとしています。netscape.security.PrivilegeManager.enablePrivilege( "UniversalBrowserRead");も含めました。

しかし、それでも機能しません。

WebサービスにアクセスするためにJavaScriptとHTMLを使用しています。

どんな助けでも本当に素晴らしいでしょう

コード

<html> <Head> <Title>Calling A WebService from HTML </Title> </Head>

<Body onload='GetDataFrmWS()'> <form name="Form1" id="Form1" runat="server" method="post"> <div id="DisplayData" > </div> <div id="Menu2"></div>

</form>

<script language='javascript'>

var objHttp; var objXmlDoc;

function GetDataFrmWS() { alert('I M Here'); var func = getDataFromWS();

}

function getDataFromWS() {

if(window.ActiveXObject) { try { objHttp = new ActiveXObject('Msxml2.XMLHTTP');

    }
 catch (ex)
 {
  objHttp = new ActiveXObject('Microsoft.XMLHTTP');
 }

} else if (window.XMLHttpRequest) { objHttp = new window.XMLHttpRequest(); netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }

strEnvelope = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' + '<soap:Body>' + ' <HelloWorld xmlns="http://tempuri.org/">' + ' <Dummy xsi:type="xsd:string">Hello</Dummy>'+ ' </HelloWorld>'+ '</soap:Body>' + '</soap:Envelope>' ;

var szUrl; szUrl = 'http://kamadhenu/Quoteme/GetCategories.asmx?op=HelloWorld'; objHttp.onreadystatechange = HandleResponse;

objHttp.open('POST', szUrl, true); objHttp.setRequestHeader('Content-Type', 'text/xml'); objHttp.setRequestHeader('SOAPAction','http://tempuri.org/HelloWorld'); objHttp.send(strEnvelope);

}

function HandleResponse() {
if (objHttp.readyState == 4) {

if (window.ActiveXObject) { objXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); objXmlDoc.async="false"; objXmlDoc.loadXML(objHttp.responseText); var nodeSelect = objXmlDoc.getElementsByTagName("Menu1").item(0); var Menu2=objXmlDoc.getElementsByTagName("Menu2").item(0); document.getElementById('DisplayData').innerHTML=nodeSelect.text;
document.getElementById('Menu2').innerHTML=Menu2.text; } else { var Text=objHttp.responseText; var parser=new DOMParser(); objXmlDoc = parser.parseFromString(Text,'text/xml'); var Value=objXmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue; var Menu2=objXmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].nodeValue; var Menu3=objXmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1].nodeValue; document.getElementById('DisplayData').innerHTML=Value;
document.getElementById('Menu2').innerHTML=Menu2; document.getElementById('Menu2').innerHTML+=Menu3; } }

}

</script> <input type='Button' Text='Click Me' onclick='GetDataFrmWS()' value="Click Me!"/> ° </Body> </HTML>

4

4 に答える 4

2

XML HTTPRequest のブラウザに依存しないコード

次のコードを使用して、XML オブジェクトを作成します。すべてのブラウザー (特に IE および非 IE) を処理するように設計されています。

/* Function to create an XMLHTTP object for all browsers */
function getXMLHTTPObject(){
    var xmlHttp;
    try{
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    } catch (e){
        // Internet Explorer
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e){
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    return xmlHttp;
}       
/* End Function */

PS質問のあなたのコードは読めません。フォーマットしてください

于 2008-12-10T06:34:43.730 に答える
1

ここにかなり簡潔な例があります

URL をhttp://recpushdata.cyndigo.com/Jobs.asmx/InsertXMLにしてみてください

PS。あなたのコードは StackOverflow で読めません。

于 2008-12-10T06:19:14.523 に答える
1

私の知る限り、XMLHTTP 要求は、さまざまなブラウザーのアクセス許可について、html ページの同じサブドメインにあるページを指している必要があります。

1 つの秘訣は、同じサーバー上に好みの言語で別のページを作成し、サーバーのネットワークで要求を処理するようにすることです。

例:

HTML ページから mydomain.com/externalrequest.php?url=www.google.com に ajax リクエストを送信すると、そのページは (fsock/cURL など) を「url」に接続して返します

于 2008-12-22T13:21:54.943 に答える
1

XHR を使用してクロスドメインに移行しようとしている場合は、JSONP メソッドを調べることができます。それについては、JQueryドキュメントを確認してください。

JSON 応答を受け入れる必要がありますが、ドメイン間で機能します。

于 2008-12-22T13:24:13.987 に答える