c# - CRM Dynamics 2015 Ribbon Button Trigger plugin using JavaScript -


i have scenario need trigger plugin on ribbon button click, have setup commands , buttons, have created custom action,that registered in plugin reg tool wire event. have tested ribbon button simple hello world, sure basics dine , set. issue lies when try call function soap invocation. here code below.

javascript

function executephonecall(requestname, refreshpage, stringparameter) {     // creating request xml calling action     var requestxml = ""      if (stringparameter == null) {         requestxml += "<s:envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";         requestxml += "<s:body>";         requestxml += "<execute xmlns=\"http://schemas.microsoft.com/xrm/2011/contracts/services\"xmlns:i=\"http://www.w3.org/2001/xmlschema-instance\">";         requestxml += "<request xmlns:a=\"http://schemas.microsoft.com/xrm/2011/contracts\">";         requestxml += "<a:parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/system.collections.generic\">";         requestxml += "          <a:keyvaluepairofstringanytype>";         requestxml += "            <b:key>target</b:key>";         requestxml += "            <b:value i:type=\"a:entityreference\">";         requestxml += "              <a:id>" + xrm.page.data.entity.getid() + "</a:id>";         requestxml += "              <a:logicalname>" + xrm.page.data.entity.getentityname() + "</a:logicalname>";         requestxml += "              <a:name i:nil=\"true\" />";         requestxml += "            </b:value>";         requestxml += "          </a:keyvaluepairofstringanytype>";         requestxml += "        </a:parameters>";         requestxml += "        <a:requestid i:nil=\"true\" />";         requestxml += "        <a:requestname>" + requestname + "</a:requestname>";         requestxml += "      </request>";         requestxml += "    </execute>";         requestxml += "  </s:body>";         requestxml += "</s:envelope>";     }     else {         requestxml += "<s:envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";         requestxml += "  <s:body>";         requestxml += "    <execute xmlns=\"http://schemas.microsoft.com/xrm/2011/contracts/services\"xmlns:i=\"http://www.w3.org/2001/xmlschema-instance\">";         requestxml += "      <request xmlns:a=\"http://schemas.microsoft.com/xrm/2011/contracts\">";         requestxml += "        <a:parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/system.collections.generic\">";         requestxml += "          <a:keyvaluepairofstringanytype>";         requestxml += "            <b:key>target</b:key>";         requestxml += "            <b:value i:type=\"a:entityreference\">";         requestxml += "              <a:id>" + xrm.page.data.entity.getid() + "</a:id>";         requestxml += "              <a:logicalname>" + xrm.page.data.entity.getentityname() + "</a:logicalname>";         requestxml += "              <a:name i:nil=\"true\" />";         requestxml += "            </b:value>";         requestxml += "          </a:keyvaluepairofstringanytype>";         requestxml += "          <a:keyvaluepairofstringanytype>";         requestxml += "            <b:key>data</b:key>";         requestxml += "            <b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/xmlschema\">" + stringparameter + "</b:value>";         requestxml += "          </a:keyvaluepairofstringanytype>";         requestxml += "        </a:parameters>";         requestxml += "        <a:requestid i:nil=\"true\" />";         requestxml += "        <a:requestname>" + requestname + "</a:requestname>";         requestxml += "      </request>";         requestxml += "    </execute>";         requestxml += "  </s:body>";         requestxml += "</s:envelope>";     }      var req = new xmlhttprequest();     req.open("post", getserviceurl(), false)     req.setrequestheader("accept", "application/xml, text/xml, */*");     req.setrequestheader("content-type", "text/xml; charset=utf-8");     req.setrequestheader("soapaction", "http://schemas.microsoft.com/xrm/2011/contracts/services/iorganizationservice/execute");     req.send(requestxml);      //refresh page if request successful.     if (req.status == 200) {         if (refreshpage) {             refreshform()         }     }     else {         xrm.utility.alertdialog(req.statustext + "\n" + req.responsexml.getelementsbytagname("faultstring")[0].textcontent);     } }  function refreshform() {     xrm.utility.openentityform(xrm.page.data.entity.getentityname(), xrm.page.data.entity.getid()); }  executephonecall("new_activatephonecall", true, ""); 

i dont see defined function getserviceurl()

req.open("post", getserviceurl(), false) 

here example how ;)

function executeaction(entityid, entityname, requestname) {     // creating request xml calling action var requestxml = "" requestxml += "<s:envelope xmlns:s="\"http://schemas.xmlsoap.org/soap/envelope/\"">"; requestxml += "  <s:body>"; requestxml += "    <execute xmlns="\"http://schemas.microsoft.com/xrm/2011/contracts/services\"" xmlns:i="\"http://www.w3.org/2001/xmlschema-instance\"">"; requestxml += "      <request xmlns:a="\"http://schemas.microsoft.com/xrm/2011/contracts\"">"; requestxml += "        <a:parameters xmlns:b="\"http://schemas.datacontract.org/2004/07/system.collections.generic\"">"; requestxml += "          <a:keyvaluepairofstringanytype>"; requestxml += "            <b:key>target</b:key>"; requestxml += "            <b:value i:type="\"a:entityreference\"">"; requestxml += "              <a:id>" + entityid + "</a:id>"; requestxml += "              <a:logicalname>" + entityname + "</a:logicalname>"; requestxml += "              <a:name i:nil="\"true\"">"; requestxml += "            </a:name></b:value>"; requestxml += "          </a:keyvaluepairofstringanytype>"; requestxml += "        </a:parameters>"; requestxml += "        <a:requestid i:nil="\"true\"">"; requestxml += "        <a:requestname>" + requestname + "</a:requestname>"; requestxml += "      </a:requestid></request>"; requestxml += "    </execute>"; requestxml += "  </s:body>"; requestxml += "</s:envelope>"; var req = new xmlhttprequest(); req.open("post", getclienturl(), false) req.setrequestheader("accept", "application/xml, text/xml, */*"); req.setrequestheader("content-type", "text/xml; charset=utf-8"); req.setrequestheader("soapaction", "http://schemas.microsoft.com/xrm/2011/contracts/services/iorganizationservice/execute"); req.send(requestxml);  //get response crm execute method //var response = req.responsexml.xml; }  function getclienturl() { if (typeof xrm.page.context == "object") {     clienturl = xrm.page.context.getclienturl(); } var servicepath = "/xrmservices/2011/organization.svc/web"; return clienturl + servicepath; } 

next, need create function execute our action , pass record’s guid, name of entity action registered against, , action’s name (requestname, in case).

function openphonecall() { var entityid = xrm.page.data.entity.getid(); var entityname = "phonecall"; var requestname = "new_reactivatephonecall"; executeaction(entityid, entityname, requestname); window.location.reload(true);    } 

http://www.plusconsulting.com/blogs/lists/posts/post.aspx?id=56

or

crm 2013: calling actions javascript


Comments