Неверный ярлык при попытке извлечь json из спокойного веб-сервиса - PullRequest
1 голос
/ 16 февраля 2012

Имея этот код при запуске на firebug, в консоли будет отображаться неверная метка , а также мой успешный обратный вызов не срабатывает.покопавшись в гугле об ответах, я обнаружил, что при использовании jsonp мне нужно проанализировать результат, а также мне нужен обратный вызов.Теперь я бьюсь головой о стену в поисках возможных ответов.Можете ли вы помочь мне с этим?СПАСИБО.

    $.ajax( {
        url: 'http://localhost:8732/Service1/data/10',
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        processdata:true,
        jsonpCallback: 'mycallback',
        success : function(data) {

           var json = $.parseJSON(data);
           $('#items').html(json);
           alert(json);

        },
        error : function(req, status, ex) {

          alert("Lol" + ex);

        }
        });
      }

Также alert("Lol"+ex) предложит LoljQuery16403233689395911671_1329386795307 не был вызван "

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

jsonpString

Переопределить имя функции обратного вызова в запросе jsonp.Это значение будет использоваться вместо callback в callback =?часть строки запроса в URL.Так что {jsonp: 'onJSONPLoad'} приведет к 'onJSONPLoad =?'перешел на сервер.Начиная с jQuery 1.5, установка для параметра jsonp значения false не позволяет jQuery добавлять строку «? Callback» в URL или пытаться использовать «=?»для трансформации.В этом случае вам также следует явно установить параметр jsonpCallback.Например, {jsonp: false, jsonpCallback: "callbackName"}

jsonpCallbackString, Function

Укажите имя функции обратного вызова для запроса JSONP.Это значение будет использоваться вместо случайного имени, автоматически сгенерированного jQuery.Желательно, чтобы jQuery генерировал уникальное имя, так как это облегчит управление запросами и обратные вызовы и обработку ошибок.Возможно, вы захотите указать обратный вызов, если вы хотите включить лучшее кэширование GET-запросов в браузере.Начиная с jQuery 1.5, вы также можете использовать функцию для этого параметра, и в этом случае значение jsonpCallback устанавливается равным возвращаемому значению этой функции

Пример кода:

<!DOCTYPE html>
<html>
<head>
  <style>img{ height: 100px; float: left; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div id="images">

</div>
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });</script>

</body>
</html>

Ссылки: http://api.jquery.com/jQuery.getJSON/

Редактировать: Код 2

$.ajax({
    url: 'http://server:port/path/to/file',
    type: 'GET',
    dataType: 'jsonp',
    cache: false,
    jsonp: '$callback',
    error: function (x, t, r) { alert(x.response.message); },
    success: function (data) {
        $.each(data.d.results, function (i, val) {
            $("#results").append("<div>" + val.name + "</div>");
        });
    }
});
0 голосов
/ 16 февраля 2012

Действителен ли json на http://localhost:8732/Service1/data/10?, введите его: http://jsonlint.com/. Вы также можете попробовать отловить ошибку, выполнив:

var request = $.ajax( {
    ...
});

request.error(function(error) {
    console.log(error);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...