$ .getJSON не выполняет успешный обратный вызов для вызова службы WCF

0

Я вызываю свою службу WCF, размещенную на локальном IIS, через jQuery, используя $.getJSON().

посмотрите мой код скрипта java

getTestRunsByProject: function (projectKey) {
        var deferred = $.Deferred();
        var link = scnfg.ServiceURL + '/GetTestRunsForProject/' + projectKey + '?callback=?';
        $.getJSON(link, function (results) {
            deferred.resolve(results);
        });
        return deferred.promise();
    },

где я добавил? callback =? в конце URL-адреса службы, потому что я получал пустой ответ с кодом состояния 200 на вкладке консоли firebug с красным текстом; хотя сервис был функциональным.

когда url модифицируется строкой? callback =? то я не получаю запись вызова службы на вкладке консоли firebug, вместо этого я нашел данные вызова службы на вкладке Net вкладки firebug, которая содержит требуемый ответ от службы.

Я вызываю эту функцию со следующим кодом сценария

$.when(serviceapi.getTestRunsByProject("W6")).then(function (data) {
        if (data.length > 0) {
            lstTestRuns = data;
        }
    });

Теперь с? Callback =? он возвращает ответ на вызов службы, если он установлен на вкладке Firebug Net, но успешный обратный вызов $.getJSON не запускается, т.е. он не возвращает объект $.Deffered(). И есть путаница с использованием? Callback =? почему запись вызова сервиса не записывается на вкладке консоли firebug.

может ли кто-нибудь помочь в этом? Заранее спасибо.

  • 0
    Вы установили обработчик ошибок и посмотрите, сообщает ли jQuery об определенной ошибке? Поддерживает ли ваш веб-сервис JSONP, который упаковывает результат в вызов функции javascript?
  • 0
    Кроме того, вам не нужно создавать свой собственный отложенный объект здесь. $.getJSON() возвращает объект, совместимый с обещанием, который автоматически разрешается или завершается с помощью вызова ajax.
Показать ещё 4 комментария
Теги:
wcf
getjson

1 ответ

0
Лучший ответ

С? Callback =? Я получал вызов перекрестного домена к моей службе, но с момента окончания службы я возвращал результат простого json-формата. Поэтому в этом случае клиент службы запрашивал данные в формате JSONP, где моя служба возвращала форматированные данные JSON. С предложением jfriend00 я искал, как реализовать механизм JSONP и нашел полезной эту ссылку.

Ссылаясь на эту ссылку, я узнаю, что мне нужно настроить привязку для моей конечной точки службы, чтобы разрешить вызов домена corss. Для этого я добавил следующую разметку в свой файл конфигурации службы

<bindings>
  <webHttpBinding>
    <binding name="webHttpBindingWithJSONP" crossDomainScriptAccessEnabled="true" />
  </webHttpBinding>
</bindings>

и обновил мое определение конечной точки, чтобы использовать эту конфигурацию привязки следующим образом

<endpoint address="" binding="webHttpBinding" contract="IAuFaitDashboard" bindingConfiguration="webHttpBindingWithJSONP" behaviorConfiguration="MySetting">

Затем моя java-скрипт getTestRunsByProject запускает выполнение, как ожидалось.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню