2016-11-17 2 views
0

Я прочитал нить после потока здесь и в другом месте, пытаясь получить вызов ajax для перекрестного домена для работы. У меня есть Restful WCF-сервис, который возвращает простой bool. Я его установки с форматом надлежащего ответа (Json) и ожидаемого URL с параметром обратного вызова:Возникли проблемы с перекрестным вызовом службы jQuery/Ajax домена

[WebGet(RequestFormat = WebMessageFormat.Json, 
ResponseFormat = WebMessageFormat.Json, 
UriTemplate = "ShowCreditCardTextJQUERY?memberNumber={memberNumber}&callback={callback}", 
BodyStyle = WebMessageBodyStyle.WrappedRequest)] 

Мой Ajax выглядит следующим образом:

$.ajax({ 
    url: "http://example.com/service/service.svc/ShowTextJQUERY", 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    dataType: "jsonp",    
    crossDomain:true, 
    data: "{'memberNumber':'" + memberNumber + "'}", 
    cache: false,    
    //success: alert(memberNumber), 
    success: function (data) { 
     var output = data; 

     if (!data) { 
      $("#dialog").dialog(
      { 
       modal: true, 
       width: 735, 
       height: 550 
      }); 
     } 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.status); 
    } 
}); 

Я получаю 200 для ответа, но это приходит в блок ошибок. Я в недоумении (и все еще довольно новый для jquery/ajax). Любая помощь будет принята с благодарностью.

+0

Учитывая 200 ответ, но данные не звучит, как вы его остановили [Одинаковая политика происхождения] (http://en.wikipedia.org/wiki/Same-origin_policy). Если вы проверите консоль, вы можете это подтвердить; будет ошибка в принимающем домене, не имеющем заголовок «Access-Control-Allow-Origin». Включили ли вы CORS в службе WCF? –

+0

У меня нет, как мне настроить это? – dreggas

+0

Использование инструментов разработчика в IE Я вижу ответ, который, как я ожидаю, возвращается в тело ответа (в данном случае значение bool false), если я изменю тип данных на json вместо jsonp, он отлично работает на моем локальном хосте (очевидно) – dreggas

ответ

0

Может быть эти строки кода решить вашу проблему, которая для вызова регулярные веб-службы

  var jsonData = [YOUR JSON PARAMETER]; 

      $.ajax({ 
       async: false, 
       type: "POST", 
       url: [YOUR WEB SERVICE URL], 
       contentType: "application/json; charset=utf-8",     
       data: JSON.stringify({ json: jsonData }), 
       dataType: "json",     
       success: OnSuccess, 
       failure: function(err) { 
        alert("Error : " + err.d); 
       } 
      }); 

      function OnSuccess(data) { 
       alert("Success:" + data.d);      
      } 

Вы можете сделать одну вещь, что нужно просто установить Access-Control-Allow-Origin & Access-Control -Затем заголовки в CustomeHeaders ваш файл web.config веб-службы.

<add name="Access-Control-Allow-Origin" value="*" /> 
<add name="Access-Control-Allow-Headers" value="Content-Type" /> 

Если вы хотите разрешить только для конкретного домена, вы можете сделать это с определенным значением домена вместо * значения