0

私はIEで動作し、他のブラウザでは動作しない機能を持っていますクロスブラウザの互換性のために書き直すのを手伝ってください

function Fetch(xml) {
var Xml = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">";
Xml += GenerateAuthenticationHeader();
Xml += "<soap:Body>";
Xml += "<Fetch xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">";
Xml += "<fetchXml>";

Xml += CrmEncodeDecode.CrmXmlEncode(xml); // Microsoft _HtmlEncode function  

Xml += "</fetchXml>";
Xml += "</Fetch>";
Xml += "</soap:Body>";
Xml += "</soap:Envelope>";

 // Microsot CreateXmlHttp function  
if ( XMLHttpRequest != null){
var XmlHttp  = new XMLHttpRequest();
}
else{
var XmlHttp  = new ActiveXObject("Msxml2.XMLHTTP"); 
}
XmlHttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false); //Sync Request  
XmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
XmlHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
XmlHttp.send(Xml);

var ie = (window.ActiveXObject) ? true : false; 
           var XmlDoc = (ie) ? new ActiveXObject("MSXML2.DOMDocument") : new window.XMLHttpRequest(); 

XmlDoc.async = false;
XmlDoc.resolveExternals = false;

XmlDoc.loadXML(XmlHttp.responseXML.text);
return XmlDoc;
 }

Google Chrome で動作するようにコードを変更する方法

4

2 に答える 2

0

XrmServicesToolkitをクロスブラウザーであり、SOAP 要求の実行を大幅に簡素化するソリューションに組み込むことをお勧めします。

var request = "<request i:type='b:WhoAmIRequest' xmlns:a='http://schemas.microsoft.com/xrm/2011/Contracts' xmlns:b='http://schemas.microsoft.com/crm/2011/Contracts'><a:Parameters xmlns:c='http://schemas.datacontract.org/2004/07/System.Collections.Generic' /><a:RequestId i:nil='true' /><a:RequestName>WhoAmI</a:RequestName></request>";
var whoAmI = XrmServiceToolkit.Soap.Execute(request);
于 2013-07-24T22:46:36.947 に答える
0

このコードを試してください。Chrome で動作するかどうかはわかりません。また、responseXML と ResponseText で発生する可能性のある問題についてのコメントを必ず確認してください。ただし、応答の処理が容易になるはずです。

そして、あなたが 2011 年にいるのなら、なぜ 2007 年のエンドポイントなのですか? これは推奨されておらず、オンラインの CRM の一部のインスタンスでは使用できません。また、CRM 2013 のインスタンスでは使用できません。

于 2013-07-23T12:11:21.957 に答える