积极答复者
Javascript调用Web Service

问题
答案
-
你的代码没有问题,soapheader可以用GenerateAuthenticationHeader()换掉,这样就不用hard-coded了。
我认为可能是Security的问题,比如是Internet Explorer的问题,你把CRM的地址放到Trusted Sites(信任站点),然后安全限制调到最低看看。
而且你为什么在Onload()事件里创建数据?
Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn- 已标记为答案 Batistuta CaiModerator 2010年10月13日 2:01
全部回复
-
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" +
" <soap:Header>" +
" <CrmAuthenticationToken xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <AuthenticationType xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">0</AuthenticationType>" +
" <OrganizationName xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">CRMTECTURA</OrganizationName>" +
" <CallerId xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">00000000-0000-0000-0000-000000000000</CallerId>" +
" </CrmAuthenticationToken>" +
" </soap:Header>" +
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"CreateRequest\">" +
" <Target xsi:type=\"TargetCreateAccount\">" +
" <Account>" +
" <name>fifthe Coffee</name>" +
" </Account>" +
" </Target>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>" +
"";var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);var resultXml = xmlHttpRequest.responseXML;
alert(resultXml.xml);
这是一段新建Account转换后的代码,麻烦帮我看看是哪里的问题,谢谢! -
" <soap:Header>" +
" <CrmAuthenticationToken xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\ ">" +
" <AuthenticationType xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">0</AuthenticationType >" +
" <OrganizationName xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">CRMTECTURA</OrganizationName >" +
" <CallerId xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">00000000-0000-0000-0000-000000000000</CallerId >" +
" </CrmAuthenticationToken>" +
" </soap:Header>" +
這里應該是用的
GenerateAuthenticationHeader()換掉
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\ ">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\ ">" +
" <Request xsi:type=\"CreateRequest\">" +
" <Target xsi:type=\"TargetCreateAccount\">" +
" <Account>" +
" <name>fifthe Coffee</name>" +
" </Account>" +
" </Target>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>" +
"";var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
var resultXml = xmlHttpRequest.responseXML;
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute ");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
alert(resultXml.xml);
你再試一下,看行不行
韓建興 http://jamson.cnblogs.com -
var authenticationHeader = GenerateAuthenticationHeader();
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\ ">" +
authenticationHeader +
" <soap:Body>" +
这样试试。
mir liug -
你的代码没有问题,soapheader可以用GenerateAuthenticationHeader()换掉,这样就不用hard-coded了。
我认为可能是Security的问题,比如是Internet Explorer的问题,你把CRM的地址放到Trusted Sites(信任站点),然后安全限制调到最低看看。
而且你为什么在Onload()事件里创建数据?
Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn- 已标记为答案 Batistuta CaiModerator 2010年10月13日 2:01