JSONP для получения JSON из протокола HTTPS с JQuery - PullRequest
10 голосов
/ 23 сентября 2010

Я пытаюсь получить JSON, который отправляется с защищенного сайта https,

Клиент надеялся не использовать какие-либо серверные языки (все это в Javascript)

Я прочитал, что должен использовать JSONP для загрузки JSON с защищенного сайта при использовании функции .ajax из Jquery.

Мой первый вопрос: в каком формате мне нужно установить этот JSONP?Прямо сейчас мой код выглядит следующим образом:

html =new Object();
    html = $.ajax({
      url: "https://my-secure.net",
      async: false,
      dataType: 'jsonp'
     }).responseText;

//alert(html);       
  alert("myObject is " + html.toSource());
     console.log(html);

Однако, ни о чем не предупреждают, и при этом ничего не регистрируется в Firebug.В основном я хочу иметь возможность манипулировать данными JSON.Я вижу данные в Response под Firebug, но есть ошибка, которая говорит «недопустимая метка».Я читал, что для того, чтобы это исправить, вы заключаете его в функцию eval с дополнительными паратезами, но это не работает.

http://b.lesseverything.com/2007/10/25/invalid-label-error-when-eval-json

Я также получаю сообщение об ошибке, в котором говорится, что мой запрос $ .ajax "не определен", но я вижу данные в ответе.Я подозреваю, что это как-то связано с тем, как я собираю исходные данные.Любой совет будет принят во внимание.Спасибо!

1 Ответ

6 голосов
/ 23 сентября 2010

вы можете использовать getJSON например

$.getJSON('ajax/test.json', function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});

проверить полную документацию getJSON http://api.jquery.com/jQuery.getJSON/

EDIT

Я был не прав ... использование Jquery.ajax вызовет кросс-браузерную проблему, но не с Jquery.getJSON

http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29

Вот пример междоменного get JSON

EDIT

Firefox имеет проблему с HTTPS, так как я знаю, что это будет исправлено, если вы отправите свой запрос, как этот

$.getJSON('ajax/test.json',{}, function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});

Источник : PJ-запросы AJAX https с использованием jquery не работают в Firefox

Надеюсь, это поможет

...