0

javascript を使用して残りのサービスを呼び出したい。私のコードは次のとおりです。

function CreateXMLHttpRequest() {
   if (typeof XMLHttpRequest != "undefined") {
      alert("1");
      return new XMLHttpRequest();
   }
   else if (typeof ActiveXObject != "undefined") {
      alert("2");
      return new ActiveXObject("Microsoft.XMLHTTP");
   }
   else {
      throw new Error("XMLHttpRequestnot supported");
   }
}

function CallWebService() {
   var objXMLHttpRequest = null;
   objXMLHttpRequest = CreateXMLHttpRequest();

   objXMLHttpRequest.open("POST", "http://localhost:2546/abc.svc/json/GetXml", true);
   objXMLHttpRequest.setRequestHeader("Content-Type", "application/xml;charset=UTF-16");
   var packet = '<CompanyRequest xmlns="http://schemas.datacontract.org/2004/07/abc.DomainModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><CompanyName>company</CompanyName></CompanyRequest>';

   objXMLHttpRequest.send(packet);
      alert(packet);
      var d =(objXMLHttpRequest.responseText);
      alert(d);           
   }

IE では正常に動作していますが、Firefox と chrome では応答が空です。何が問題なのか理解できません。私はこれを3日間探していました。エラーがある場合はお知らせください。

前もって感謝します....

4

2 に答える 2

1

あなたは非同期呼び出しを行っています。コールバックを使用してみてください。

function CreateXMLHttpRequest() {
     if (typeof XMLHttpRequest != "undefined") {
         return new XMLHttpRequest();
     } else if (typeof ActiveXObject != "undefined") {
         return new ActiveXObject("Microsoft.XMLHTTP");
     } else {
         throw new Error("XMLHttpRequestnot supported");
     }
 }
 function CallWebService() {
     var objXMLHttpRequest = CreateXMLHttpRequest();
     objXMLHttpRequest.open("POST", "http://localhost:2546/abc.svc/json/GetXml", true);
     objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml");
     var packet = '<CompanyRequest xmlns="http://schemas.datacontract.org/2004/07/abc.DomainModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><CompanyName>company</CompanyName></CompanyRequest>';
     objXMLHttpRequest.onreadystatechange = function (){
         if (objXMLHttpRequest.readyState==4 && objXMLHttpRequest.status==200) {
             alert(objXMLHttpRequest.responseText);
         }
     }
     objXMLHttpRequest.send(packet);
 }
于 2012-11-21T08:00:32.457 に答える
0

非同期リクエストを実行しています。

次のような同期リクエストを実行してみてください

 objXMLHttpRequest.open("POST", "http://localhost:2546/abc.svc/json/GetXml", false);

または非同期的に

objXMLHttpRequest.onreadystatechange = function () {
    if ( objXMLHttpRequest.readyState == 4 ) {
        alert(req.responseText);
    }
};

ヘッダーを次のように設定します。

これを試して:

 objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml");

 objXMLHttpRequest.setRequestHeader( "SOAPAction", "http://localhost:2546/abc.svc/json/GetXml" );
于 2012-11-21T07:59:54.770 に答える