title: Cross Domain Access with PHP Proxy
body: <p>I'm Accessing a XML (.net) webservice via jQuery and due to cross domain access restrictions I was restricted. I was using Simple PHP proxy and calling the webservice. Being a newbie webdev its really a headache. </p>
  
  <p>I'm geting a funny response as below.</p>
  
  <pre><code>{"status":{"http_code":500},"contents":"&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&lt;soap:Envelope xmlns:soap=\"http:\/\/www.w3.org\/2003\/05\/soap-envelope\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;&lt;soap:Body&gt;&lt;soap:Fault&gt;&lt;soap:Code&gt;&lt;soap:Value&gt;soap:Receiver&lt;\/soap:Value&gt;&lt;\/soap:Code&gt;&lt;soap:Reason&gt;&lt;soap:Text xml:lang=\"en\"&gt;Server was unable to process request. ---&amp;gt; Root element is missing.&lt;\/soap:Text&gt;&lt;\/soap:Reason&gt;&lt;soap:Detail \/&gt;&lt;\/soap:Fault&gt;&lt;\/soap:Body&gt;&lt;\/soap:Envelope&gt;"}
  </code></pre>
  
  <p>This is my JavaScript</p>
  
  <pre><code>var proxy = 'proxy.php';
  //http://crm.eyepax.net/contact.asmx?op=LogIn
  //variables for Add Contacts
  var addAccountServiceUrl = proxy+'?url='+serviceURL'; // Preferably write this out from server side
  var OrganizationID=123;
  var ParentID=123    ;
  var AccountManagerID="123";
  var OrganizationName="Testapple";
  var IncorporationNo="23";
  var PostAddress="asdfklj asldfj";
  var CountryID="LK";
  var VisitAddress="asldkf asldkf asldfas dfasdf";
  var VisitCountryID="LK";
  var VisitSwithboard="242344";
  var VisitFax="234234";
  var Www="http://www.eyepax.com";
  var Active=true;
  var RegBy=345345345345;
  var ConfigurationCode="28BC9CC3@BFEBFBFF0001067A";
  var Flag=1;
  var LicenceOrganazationID=1;
  var sErr;
  
  var userName="test123";
  var password="Eyepax321";
  
  var flag="2";
  
  function addContact()
  {
  //this is to be commented soon! 
  //alert("function called");
  //update the webservice soapmesg
  
  var soapMessage =
  '&lt;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/"&gt; \
    &lt;soap:Body&gt; \
      &lt;LogIn xmlns="http://eyepax.crm.com/contact"&gt; \
        &lt;UserName&gt;'+userName+'&lt;/UserName&gt; \
        &lt;Password&gt;'+password+'&lt;/Password&gt; \
        &lt;ConfigurationCode&gt;'+ConfigurationCode+'&lt;/ConfigurationCode&gt; \
        &lt;Flag&gt;'+flag+'&lt;/Flag&gt; \
      &lt;/LogIn&gt; \
    &lt;/soap:Body&gt; \
  &lt;/soap:Envelope&gt;';
  
  $.ajax({
  beforeSend: function(jqXHR, settings) {
          //var xhr = new CrossXHR();
         //jqXHR = xhr;
      },
  url: addAccountServiceUrl,
  type: "POST",
  dataType: "xml",
  data: soapMessage,
  crossDomain: true,
  success: endAddAccount,
  error: function(jqXHR, textStatus, errorThrown) {
      alert("failure"); 
      console.log(textStatus);
      console.log(errorThrown);},
  contentType: "text/xml; charset=\"utf-8\""
  });
  
  return false;
  }
  
  function endAddAccount(xmlHttpRequest, status)
  {
      console.log(xmlHttpRequest);
      console.log(status);
      alert("webservice called!");
   $(xmlHttpRequest.responseXML)
      .find('WriteOrgResponse')
      .each(function()
   {
     var orgres = $(this).find('WriteOrgResult').text();
     var error = $(this).find('vstrError').text();
  
     alert(orgres +' -'+ error);
   });
  
   var a = $(xmlHttpRequest.responseXML).find('WriteOrgResult');
   var b = $(xmlHttpRequest.responseXML).find('vstrError');
   console.log("a"+a.text());
   console.log("b"+b.text());
  }
  
  
  //function for field validation
  $("#add_account_page").live('pageinit', function(event) {
  //alert("Add Test");    
  var account_name_val;
  $("#submit").click(function(){
      account_name_val = $("#account_name").val();
      // this function is used to see whether mandatory field Account Name is available
      if(account_name_val==""){
          alert("Please fill Account Name");
          $("#account_name").focus();
      }
      else{
          //calling webservice
              addContact();
              }
          });
     });
  </code></pre>
  
  <p><a href="http://github.com/cowboy/php-simple-proxy/raw/master/ba-simple-proxy.php" rel="nofollow">PHP proxy source</a></p>