#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
Привет, у меня есть проект здесь на работе, где нам нужно определенное значение из другого домена, к изменению которого у меня нет доступа (поэтому я не могу создавать вложенные фреймы iframes или CORS). Нам нужно сохранить состояние сеанса / Cookie одинаковым, чтобы получать необходимые данные со страницы по мере изменения токена в зависимости от пользователя на странице. Таким образом, решение на стороне сервера не будет работать.
Каков наилучший способ сделать это, ниже приведен источник страницы в целом. Мне нужно получить значение FF321332
{"<!--":"","token":"FF321332","expire":1317448445,"":"--><body onload=document.body.innerHTML=clear>"}
Некоторые вещи, которые я пробовал до сих пор, — это теги динамического скрипта «Он выдает ошибку JS Неожиданный токен: ошибка, Jquery (.getScript ) это выдает ту же ошибку, любая другая форма .get или xhr выдаст междоменную ошибку.
Я чувствую, что был на правильном пути с тегами .getScript или Dynamic Script, поскольку он почти хочет его прочитать. Но если я смогу обойти неожиданную ошибку токена и просто прочитать ее как текст (если это возможно) Я могу просто разобрать переменную как обычный текст.
Любая помощь в этом была бы весьма признательна.
Ответ №1:
JSONP позволяет вам делать то, что вы пытаетесь сделать. Ознакомьтесь с документом jQuery о том, как заставить ваш файл .get использовать JSONP, чтобы обойти междоменное принуждение браузера.
По сути, когда вы выполняете $.getJSON, если в URL-адресе есть фрагмент с надписью «обратный вызов =» что угодно, тогда он будет обрабатывать его как jsonp вместо стандартного getjson .
Удачи.
Комментарии:
1. да, я забыл упомянуть в своем посте, что я тоже пробовал это, он в основном выдает ту же ошибку «Неожиданный токен: «, что и теги .getScript и dynamic script. похоже, что он пытается запустить его как скрипт. $.getJSON(url, function(json){ alert(«JSON DATA: » json); }); Я мог бы настроить макет страницы, которую я ищу, я действительно могу указать точную страницу из-зак политике компании
2. дайте мне jsfiddle, чтобы увидеть его, если сможете.
3. ссылка — вот макет для тебя, я надеюсь, что ты более успешен, чем я! Спасибо за помощь.
4. Хорошие новости… это работает… но браузеру не нравится получать JSON в том формате, в котором он у вас есть. Если вы откроете инструменты разработчика в Chrome, там будет вкладка «Сеть». Нажмите на это и перезагрузите страницу. Вы увидите запрос на test.php страница. Вы увидите ответ. Ему не нравится видеть такой ответ. Если бы вы просто поместили его в массив (оберните с помощью скобок), это сработало бы для вас. Не уверен, что еще вам сказать. Тем не менее, он работает. Если вы хотите увидеть мои скриншоты, дайте мне знать.
5. да, у меня нет контроля над этим сервером, мне интересно, есть ли способ заставить браузер каким-то образом принять его в пригодное для использования состояние?
Ответ №2:
Не думайте, что вы можете обойти ошибку, используя теги скрипта, потому что обычно, как только загружается «javascript», указанный в атрибуте src, он также выполняется. Вы сказали, что не можете использовать решение на стороне сервера, потому что вам нужно сохранить состояние?
Ну, вы можете сделать это с помощью curl и cookie jar. Никогда не пробовал это раньше, но теоретически это должно сработать: в основном все, что вам нужно сделать, это настроить запрос curl на удаленный домен для приема файлов cookie и сохранения их в файле (cookie jar), а затем выполнить второй запрос для извлечения страницы, проходящей по предыдущим полученным файлам cookie.
Попробуйте, может быть, это сработает.