Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Кросс запрос (https://javascript.ru/forum/misc/57128-kross-zapros.html)

spirit1086 21.07.2015 12:32

Кросс запрос
 
Здравствуйте, подскажите в чем проблема не работал с кросс запросами
Выдает ошибку Unexpected end of input, в консоли url картинки вижу

<!DOCTYPE HTML>
<html>
<head>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>


$.getJSON( "http://evosoft.kz/get_picture.php?url=http://some-web-site.com/index.php&callback=?")
                      .done(function( data ) {
                        $( "#result" ).html(data);
   });

<body>
  <div id="result"></div>
</body>
</html>

spirit1086 21.07.2015 13:31

не ужели ни кто не знает?

Deff 21.07.2015 13:44

1. Проверьте валидность json на запрашиваемой Вами странице http://jsonformatter.curiousconcept.com/
2. В топике для запуска JQ нун ставить библиотеки

<!DOCTYPE HTML>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
  <script>
<body>
    $.getJSON( "http://evosoft.kz/get_picture.php?url=http://some-web-site.com/index.php&callback=?")
                      .done(function( data ) {
                        $( "#result" ).html(data);
   });
  </script>

  <div id="result"></div>
</body>
</html>

spirit1086 21.07.2015 14:05

http://jsonformatter.curiousconcept.com/ вставил туда url ответ
The data in the JSON data/URL field is not JSON.
Получается ответ идет не ввиде json, в браузере открыл урл он вернул строку
http://evosoft.kz/images/img12221564.jpg
как ее принять не подскажите? Писал через $.post, $get не работает выдает ошибку

XMLHttpRequest cannot load http://evosoft.kz/get_picture.php?ur....com/index.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://test.kz' is therefore not allowed access.

Deff 21.07.2015 14:06

spirit1086,
HTML обертывается в топике в BB-тег HTML , а не JS , кнопка (<>)

Deff 21.07.2015 14:09

Цитата:

Сообщение от spirit1086
Получается ответ идет не ввиде json, в браузере открыл урл он вернул строку

Перечитайте про формат json! Ну не в json у Вас данные на странице! Поэтому брауз их не принимает

Если читать лень, проще тогда поставить на запрашиваемой странице данные форматом обычного ява-скрипт файла
типо
var img_src = 'http://evosoft.kz/images/img12221564.jpg'

И делать запрос
$.getScript("http://evosoft.kz/get_picture.php?url=http://some-web-site.com/index.php&callback=?", function(){
  alert(img_src );
});

spirit1086 21.07.2015 14:29

картинка каждый раз может быть разная заранее ее не надо присваивать переменной!Про json я прочитал понял что идет не в том формате, дело в том что сервер у которого я запрашиваю вот так выдает я там править ничего не могу мне дали ссылку для тестирования чтобы я отработал механизм.
$.getScript("http://evosoft.kz/get_picture.php?url=http://some-web-site.com/index.php&callback=?", function(data){
      alert(data);
});

выдает undefined хотя при открытии в браузере выдает текстовую ссылку
В консоли ошибка

get_picture.php?url=http://some-web-site.com/index.php&callback=?&_=1437478331827:1 Uncaught SyntaxError: Unexpected end of input
После & значение из цифр каждый раз разные


Блин уже пол дня маюсь с этим, кто понял как получить данные напишите пожалуйста

Deff 21.07.2015 14:31

spirit1086,
Гы, ну и меняете на серве адрес картинки в тексте страницы, а переменная та же, а в чем проблема ?

Deff 21.07.2015 14:33

Цитата:

Сообщение от spirit1086
Блин уже пол дня маюсь с этим, кто понял как получить данные напишите пожалуйста

Замените строку:

http://evosoft.kz/images/img12221564.jpg

на
var img_src = 'http://evosoft.kz/images/img12221564.jpg'

Красное будете менять на сервере

spirit1086 21.07.2015 14:39

дело в том что сервер у которого я запрашиваю вот так выдает я там править ничего не могу мне дали ссылку для тестирования чтобы я отработал механизм.Я даже не знаю каким образом он выдает
И ничего что файл php'ный getscript вроде с js файлами работает?

Deff 21.07.2015 14:54

Цитата:

Сообщение от spirit1086
дело в том что сервер у которого я запрашиваю вот так выдает я там править ничего не могу мне дали ссылку для тестирования чтобы я отработал механизм.Я даже не знаю каким образом он выдает

Ну тады пусть либо дают нормальным json, либо ява-скрипт объектом
В противном случае организация кроссдомена будет жутко усложнена и зависить от третьих ресурсов, ибо придётся проксировать.

Ну еще вариант ставить на эту запрашиваемую страницу специально разработанный скрипт обмена и ставить эту страницу фреймом.

Без правки страницы не обойтись

spirit1086 21.07.2015 15:03

Сейчас мне ответил что по этому url в файле прописано для теста только
<?php echo "http://evosoft.kz/images/img12221564.jpg";?>
тогда не пойму почему не могу получить
И мне сейчас выдали
Вы не можете запрашивать информацию с сайта №2 на сайт №1 посредством скриптов исполняемых браузером.
Ajax, JQuery и любые библиотеки и объектные скрипты сайта исполнимые браузером - могут работать только на уровне текущего доменного имени, это предусматривает политика безопасности библиотек и браузеров

Deff 21.07.2015 15:21

spirit1086,
Именно поэтому, для формата json нун прописать

<?php echo "functionCall({'1':'http://evosoft.kz/images/img12221564.jpg'})";?>

Если картинки одновременно три(к примеру):
<?php echo "functionCall({'1':'http://evosoft.kz/images/img12221564.jpg','2':'http://evosoft.kz/images/imgXXXX.png','3':'http://evosoft.kz/images/imgZZZZ.gif'})";?>

spirit1086 21.07.2015 16:06

Попрошу прописать данную строку
<?php echo "functionCall({'1':'http://evosoft.kz/images/img12221564.jpg'})";?>
а как ее получить и обработать могли бы вы написать ? уже башка не варит

Deff 21.07.2015 16:43

spirit1086,
Гм, нун реально ставить тему запросов в топике, особенно если нет опыта в js
Вы в парсере проверили страницу ?
http://jsonformatter.curiousconcept.com/

Если Вы хотите передать произвольный контент со страницы(дабы не ломать голову с json), проще таким кодом js на отдаваемой странице:
function addContent (){ /*==123==; Тут любой контент, (кроме /* или */) ==123==;*/}

Обработка :
$.getScript("Ccылка", function(){
  addContent = addContent.toString().split('==123==;')[1]
 alert(addContent)
});

spirit1086 22.07.2015 08:38

Спасибо Deff, реализовал через $.getJson попросил чтобы данные отправляли в формате json.
После возник такой Вопрос если иду по ссылке
http://evosoft.kz/get_picture.php?ur...php&callback=?
ТО все нормально получаю урл картинки, если подставляю вместо .com домены в зоне .ru выдает что нет доступа к файлу get_picture.php ?

spirit1086 22.07.2015 08:53

мне задали такой вопрос, а если мы не могли бы связаться с людьми отвечающими за информацию отдаваемой страницы как бы реализовали это. Я так понял если передается текстом с другого сайта ее получить нельзя?

Deff 22.07.2015 09:42

Цитата:

Сообщение от spirit1086
мне задали такой вопрос, а если мы не могли бы связаться с людьми отвечающими за информацию отдаваемой страницы как бы реализовали это.

Тогда нужно задействовать других PHP-пистов, которые бы написали проксирование файлов с ресурса http://evosoft.kz/ - но надежность канала падает в степени кол-ва посредников, т.е если отказывает один из трех ресурсов (ранее было два)

Собственно реальный метод, если они могут помочь(посколь уже помогли), чтобы они и организовали проксирование ресурсов по именно по вашему реферу(линку запроса с Вашего ресурса, дабы другие не грузили их сервер прокси-запросами). Либо осваивайте PHP, разыскивайте ресурс с PHP (или иным серверным языком) и программируйте проксирование для себя. В принципе с нуля можно нарисовать код велосипеда на PHP за пару недель. В инете много инфы.
Почитайте тут справочник и учебник http://javascript.ru/ajax/cross-origin-2


Часовой пояс GMT +3, время: 22:03.