Служба Ajax WCF возвращает пустой запрос jQuery - PullRequest
1 голос
/ 30 сентября 2010

У меня есть служба ASP.NET Ajax, настроенная с использованием WebSriptServiceHostFactory в файле * .svc - без конфигурации web.config. В контракте я начинаю с двух очень простых методов:

    [OperationContract()]
    [WebGet]
    string GetPersonalInformationLabel();

    [OperationContract()]
    [WebGet]
    string GetCorporateInformationLabel();

И моя настройка jQuery выглядит следующим образом:

     $.ajaxSetup({
        type: "POST",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        dataFilter: function(data){
            var msg;

            if(    typeof(JSON) !== 'undefined' &&
                typeof(JSON.parse) === 'function')
                msg = JSON.parse(data);
            else
                msg = eval('(' + data + ')');

            if(msg.hasOwnProperty('d'))
                return msg.d;
            else 
                return msg;
        }
    });

  $("#chkCorporateGift").click(function(){
   if($(this).is(":checked")){
    $.ajax({
     type: "GET",
     url: "http://localhost/Services/OG.svc/GetCorporateInformationLabel",
     success: function(msg){
      $("#lblInformationType").text(msg);
     }
    });
   }
   else {
    $.ajax({
     type: "GET",
     url: "http://localhost/Services/OG.svc/GetPersonalInformationLabel",
     success: function(msg){
      $("#lblInformationType").text(msg);
     }
    });
   }
  });

Как вы можете видеть, ajaxSetup назначает тип по умолчанию "POST", но мне пришлось переопределить его с помощью "GET" в моих двух вызовах ниже, поскольку я получал "405 Method Not Allowed", вероятно, потому что контракт использует Атрибут WebGet] для обоих методов

Так что теперь, когда сообщение 405 пропало, я продолжаю и вызываю два метода прямо в моем браузере, и они возвращают ожидаемые результаты. Однако ничего не возвращается, когда эти два метода вызываются с помощью кода jQuery, который я настроил выше. Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 30 сентября 2010

Первое, что я хотел бы сделать, это проверить с помощью Fiddler или Firebug , действительно ли что-либо отправлено обратно в браузер. Если это так, вы можете установить точку останова в ваших методах JavaScript с помощью Visual Studio 2010 и проверить, что там происходит.

Вы действительно видите, что методы веб-службы получают удар при вызове их с клиента?

Если все это работает нормально, я бы временно отключил функцию dataFilter и посмотрел, что произойдет. Глядя на ваш код, я думаю, что это единственное место, где что-то может пойти не так (хотя не уверен, что идет не так). Вы действительно получаете пустое ответное сообщение или обработчик success никогда не вызывается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...