Не удается получить доступ к данным jsonp, возвращенным из WCF в jquery - PullRequest
1 голос
/ 25 марта 2012

Я мог бы использовать другой набор глаз - возможно, я упускаю что-то очевидное.Я написал службу WCF, чтобы вернуть некоторые базовые данные из моей базы данных сервера SQL.Кажется, функционирует просто отлично.Теперь я просто пытаюсь вывести эти данные на мою веб-страницу следующим образом:

<script type="text/javascript">
  $.ajax({ url: 'http://localhost:35798/restserviceimpl.svc/json/999?callback=?',
    dataType: "jsonp",
    success: function (data) {
        alert(data); 
        $.each(data, function (i, item) {
            $('#gallery').append('<p>' + i + '.'+ item + '</p>');
        });
    }
  });
</script>

Используя fiddler, мне кажется, что данные формата json возвращаются на мою веб-страницу правильно (и предупреждение показывает, что выглядитданные json, которые проверяются на jsonlint.com), но когда я пытаюсь выполнить итерацию, я просто получаю один символ для каждого «каждого» вместо «записей».Я получаю 800+ итераций, каждая из которых содержит только один символ строки JSON вместо приблизительно 17 «записей» данных json, каждая с двумя полями.

Итак, я получаю строку из моего WCF, котораяпросто «похоже» на JSON, или в моем скрипте jquery выше есть ошибка?

Ответы [ 2 ]

1 голос
/ 25 марта 2012
  1. Какое значение имеет заголовок Content-Type?Это должно быть «application / json»
  2. Какое значение данных возвращает сервис?Это может быть что-то вроде «[a, b]» вместо [a, b] - то есть вся строка может быть в кавычках или что-то в этом роде.

Обычно скрипт выглядит хорошо.

0 голосов
/ 26 марта 2012

Ну, у меня ушло почти 2 дня пробной версии ошибки, не уверенной, была ли у меня проблема на стороне WCF или на стороне jQuery, но это то, с чем я закончил и работает:

<script type="text/javascript">
$(function () {
    $.ajax({
        url: 'http://localhost:35798/restserviceimpl.svc/json/999',
        type: 'GET',
        dataType: 'jsonp',
        success: function (data) {
            var obj = $.parseJSON(data);
            $.each(obj, function (i, item) { $('#gallery').append('<p>' + item.Id + '.' + item.Name + '</p>'); });
        }
    });
});

по какой-то причине, которую я не до конца понимаю, мне пришлось добавить строку $ .parseJSON (data), чтобы преобразовать строку 'JSONP', исходившую из моей службы WCF, в пригодный для использования JSON, чтобыв состоянии перебрать его.Это странно, потому что я использую JSONP из других мест в этом приложении и не должен был это делать, поэтому возможно, что мой WCF отправляет слегка искаженные результаты, которые мне нужно компенсировать в моем jQuery, но пока я не поймуесли это правда, я просто собираюсь пойти с тем, что работает.

...