jQuery.getJSON в пользовательском сценарии механика

Такой старый API еще не поддерживает SNI; осуществление простого текста HTTP могло бы помочь:

OkHttpClient client = new OkHttpClient.Builder()
    .connectionSpecs(Arrays.asList(ConnectionSpec.CLEARTEXT))
    .followRedirects(false)
    .build();

Продвижение в эти OkHttpClient.Builder должно также сказать, где точно оно застревает.

11
задан 30 October 2009 в 01:11
поделиться

2 ответа

Разве не было бы хорошо, если бы jQuery использовал GM_xmlhttpRequest внутри, чтобы вы могли пользоваться всеми удобствами методов jQuery и межсайтовой функциональностью Greasemonkey? Как указывает Махемофф, Greasemonkey может позволить вам сделать запрос, не полагаясь на JSONP и не столкнувшись с проблемой обратного вызова, с которой вы сталкиваетесь, но вам придется иметь дело с содержимым JSON самостоятельно.

Мы написали библиотеку, которая сделает именно это: мост Greasemonkey / jQuery XHR . Если вы @require этот скрипт в своем пользовательском скрипте, то все $. Get и $. GetJSON и $. Post и т. Д. Вызовы jQuery будут работать на разных сайтах, не полагаясь на такие методы, как JSONP.

Таким образом, если вы используете этот мост и просто удалите ? Callback =? из своего URL-адреса, ваш код jQuery должен работать без изменений. Эта запись в блоге содержит пошаговое руководство. Если у кого-то есть вопросы, комментарии, отчеты об ошибках или предложения по плагину моста, дайте мне знать.

16
ответ дан 3 December 2019 в 04:13
поделиться

Временное решение - использовать GM_HttpRequest. Вы можете обойтись без JSONP для междоменных запросов, потому что, в отличие от обычного XHR, GM_HttpRequest разрешает междоменные вызовы. Вам нужно что-то вроде:

  GM_xmlhttpRequest({
     method: "GET",
     url: "http://example.com/path/to/json",
     onload: function(xhr) {
      var data = eval("(" + xhr.responseText + ")");
      // use data ...
    }
  });

Обратите внимание, что это самый простой способ eval JSON. Если вам нужно более безопасное решение для ненадежного JSON, вам необходимо включить небольшую библиотеку для анализа JSON .

К сожалению, вам также нужно обернуть, казалось бы, бесполезный setTimeout нулевой продолжительности вокруг всего. Я считаю, что проще всего вставить GM_xmlhttpRequest в отдельный метод, а затем запустить setTimeout (makeCall, 0);.

Вы можете увидеть реальный пример здесь .

8
ответ дан 3 December 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: