Cross Domain jQuery Ajax Request & WCF REST Service

jquery, jsonp, rest, wcf

Solution

Well I figured out on my own. Solution was to modify the configuration file holding the service details

I added Standard Endpoint and the binding in the config file

<standardEndpoints>
      <webScriptEndpoint>
       <standardEndpoint crossDomainScriptAccessEnabled="true">
       </standardEndpoint>
      </webScriptEndpoint>
      </standardEndpoints>



  <bindings>

  <webHttpBinding>
    <binding name="webHttpBindingWithJsonP"
             crossDomainScriptAccessEnabled="true" />
  </webHttpBinding> 

Problem

I am calling (Ajax Request) a WCF REST service and the request is a cross domain request. If I deploy my service in the same domain, everything works like cream. Eventually in production, the service will be in a different domain. I am using jQuery 1.5.2. My service returns me an error saying: ``` errorThrown: "jQuery15208493315000087023_1334089616458 was not called" textStatus: "parsererror" ``` Although in Firefox I can see the JSON values but execution falls to the error handler of Ajax request. My Ajax request is: ``` function CallService() { $.ajax({ type: "GET", url: "http://SomeService/EmpService.svc/GetValues?dv=1455", contentType: "application/json; charset=utf-8", dataType: "jsonp", processdata: false, success: function (data) { ServiceSucceeded(data); }, error: function (jqXHR, textStatus, errorThrown) { debugger; alert("Service Error"); ServiceFailed(jqXHR, textStatus, errorThrown); } }); } ``` On WCF Service side, I have configured CrossDomainScriptAccess to true: ``` <webHttpBinding> <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" /> </webHttpBinding> ``` JSON response which I get from the server is: ``` [{"Message": "Stop On Duty", "MessageTime": "\/Date(1334068773893-0500)\/"}, {"Message": "Start On Duty", "MessageTime": "\/Date(1334068763540-0500)\/"}, {"Message": "App_testing_4102012924am", "MessageTime": "\/Date(1334068533627-0500)\/"}, {"Message": "Kunal_testing_4102012924am", "MessageTime": "\/Date(1334067945510-0500)\/"}, {"Message": "Alert: Door Open", "MessageTime": "\/Date(1334066280963-0500)\/"}] ``` Am I missing anything here in the settings. Entire code works fine if the service is moved to the same domain. I looked into similar post but couldn't make this work.

Original source