[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Curl + AJAX запрос
Сашок
как с помощью курла сделать аякс-запрос



Спустя 4 часа, 33 минуты, 52 секунды (12.07.2011 - 20:52) Raito-kun написал(а):
может я чего-то не знаю, но как можно сделать asynchronous JAVASCRIPT реквест при помощи php curl?

Спустя 1 день, 21 час, 26 минут, 11 секунд (14.07.2011 - 18:19) Guest написал(а):
есть файл который при заполнении формы отправляет с помощью яваскрипта постом переменные в файл пхп тот обрабатывает переменные и данные помещает в переменную которая отображается в том файле где фориа . ВНИМАНИЕ ВОПРОС ЗНАТОКАМ !!! КАК ДОСТАТЬ ЭТИ ДАННЫЕ ??? КТО ИЗ ЗНАТАКОВ СМОЖЕТ ОТВЕТИТЬ НА ЭТОТ ВОПРГОС ???

Спустя 24 минуты, 48 секунд (14.07.2011 - 18:43) killer8080 написал(а):
Цитата (Guest @ 14.07.2011 - 18:19)
есть файл который при заполнении формы отправляет с помощью яваскрипта постом переменные в файл пхп тот обрабатывает переменные и данные помещает в переменную которая отображается в том файле где фориа . ВНИМАНИЕ ВОПРОС ЗНАТОКАМ !!! КАК ДОСТАТЬ ЭТИ ДАННЫЕ ??? КТО ИЗ ЗНАТАКОВ СМОЖЕТ ОТВЕТИТЬ НА ЭТОТ ВОПРГОС ???

А каким боком здесь curl??? blink.gif
Покажи код, как ты это делаешь, тогда можно будет что то советовать.

Спустя 10 минут, 40 секунд (14.07.2011 - 18:54) Guest написал(а):
при нажатии на кнопку в форме выполняется яваскрипт фун-ия
function toursearch_result(page_start) {
AjaxRequest.send('toursearch_form', '/actions_site.php', 'Идёт загрузка данных...', true, {'_event':'galopom/toursearch_result', 'page_start':page_start});
}
здесь находится описание AjaxRequest.send=> http://voyage.kiev.ua/js/site/ajax2.js
которая передаёт посты в actions_site.php а тот в свою очередь выдаёт результат

Спустя 9 минут, 57 секунд (14.07.2011 - 19:04) killer8080 написал(а):
А что должен делать /actions_site.php? Сохранить полученное в БД или что? Непонятна суть вопроса.

PS это что оболочка к библиотеке Катерова?

Спустя 14 часов, 41 минута, 56 секунд (15.07.2011 - 09:46) Guest написал(а):
он не должен делать он делает : обрабатывает пост переменные и результат помещает в переменную которая отображается в http://voyage.kiev.ua/Toursearch/ надо достать эти данные

Спустя 21 минута, 14 секунд (15.07.2011 - 10:07) killer8080 написал(а):
за обработку ответа сервера отвечает метод responseParser, который поместит результат в контейнер, указанный в свойстве preloaderObj. Покажи код где инициируется AjaxRequest.

Спустя 4 минуты, 48 секунд (15.07.2011 - 10:12) Guest написал(а):

Спустя 21 минута (15.07.2011 - 10:33) killer8080 написал(а):
Ну так данные помещаются в :
<div id="ajaxPreloader"></div>

соответственно извлечь их от туда
var loaded_text = document.getElementById("ajaxPreloader").innerHTML;

это нужно?

Спустя 7 минут, 35 секунд (15.07.2011 - 10:40) Guest написал(а):
да конечно !!! КАк в <div id="ajaxPreloader"></div> ??? а не в
<div id="layer_result"></div> ???

Спустя 7 минут, 51 секунда (15.07.2011 - 10:48) killer8080 написал(а):
Смотря как отдаются данные в бэкэнде, если через echo то "ajaxPreloader", если
$_RESULT['result'] = 'ответ';

то "layer_result".

Спустя 6 минут, 40 секунд (15.07.2011 - 10:55) Guest написал(а):
могу точно сказать в "layer_result". результат а в в <div id="ajaxPreloader"></div>
простое окошечко которое поумолчанию не видно оно появляется когда что-то подгружается или выводится

Спустя 6 минут, 32 секунды (15.07.2011 - 11:02) killer8080 написал(а):
Guest
ну так а в чём собственно проблема? Вытаскивай результат из дива, или я чего то не догоняю?

Спустя 11 минут, 53 секунды (15.07.2011 - 11:13) Guest написал(а):
сайт то динамический то есть предположим что на главной стр подключен файл
include '/actions_site.php' в котором выполняется какаято операция и в
$а='html код' а в <div id="layer_result"> <?echo $a?></div> и так как это всё динамически то в <div id="layer_result"> не чего не видно</div>

Спустя 1 час, 26 минут, 2 секунды (15.07.2011 - 12:39) killer8080 написал(а):
блок <div id="layer_result"> предназначен для вывода результата ajax запроса, зачем туда из PHP что то выводить?

Спустя 5 часов, 44 минуты, 21 секунда (15.07.2011 - 18:24) Guest написал(а):
неужели некто не знает ?



Спустя 10 минут, 30 секунд Guest написал(а):
Цитата (killer8080 @ 15.07.2011 - 09:39)
блок <div id="layer_result"> предназначен для вывода результата ajax запроса, зачем туда из PHP что то выводить?

да согласен неправ вот здесь http://voyage.kiev.ua/js/site/ajax2.js запрос который выводит и получает данные а именно
responseParser : function (); и идёт привязка к сессии

Спустя 22 минуты, 17 секунд (15.07.2011 - 18:46) killer8080 написал(а):
Guest
так ты толком объясни что хочешь получить? smile.gif

Спустя 7 минут, 10 секунд (15.07.2011 - 18:53) Winston написал(а):
Цитата (killer8080 @ 15.07.2011 - 18:46)
так ты толком объясни что хочешь

А разве не понятно? Он мозг хочет все вынести biggrin.gif

Спустя 1 минута, 54 секунды (15.07.2011 - 18:55) Guest написал(а):
данные которые выводятся после нажатия кнопки поиск

Спустя 16 минут, 43 секунды (15.07.2011 - 19:12) killer8080 написал(а):
эти что ли? :D
Данные ответа

HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Fri, 15 Jul 2011 16:08:58 GMT
Content-Type: text/plain; charset=windows-1251
Connection: keep-alive
X-Powered-By: PHP/5.3.5
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 176


Тело ответа

{ "id": "13107460392012", "js": { "result": "\t<BR>\n\t<BR>\n\t<center><B>По Вашему запросу не найдено ни одного тура.<\/B><\/center>\n\t<BR>\n\t<BR>\n\t<BR>\n" }, "text": "" }

ну так и доставай их из дива.

Спустя 2 часа, 16 минут, 15 секунд (15.07.2011 - 21:28) Guest написал(а):
ну и как их достать ??????????????????????????????????

Спустя 8 минут, 27 секунд (15.07.2011 - 21:37) killer8080 написал(а):
var loaded_text = document.getElementById("layer_result").innerHTML;

Спустя 1 час, 47 минут, 36 секунд (15.07.2011 - 23:24) Guest написал(а):
достать надо удалённо с другого сервера

Спустя 15 часов, 21 минута, 29 секунд (16.07.2011 - 14:46) killer8080 написал(а):
Цитата (Guest @ 15.07.2011 - 23:24)
достать надо удалённо с другого сервера

ну вот, картина начинает прояснятся :rolleyes:
а зачем тебе курл? Можно сделать и на сокетах. Вот пример ;)
header("Content-Type: text/html; charset=utf-8");


$req_string =
'_event=galopom/toursearch_result&city_from_id=3959&'.
'tour_type=0&adults=2&childs=0&age_1=&age_2=&age_3=&'.
'age_4=&hotfil=&country_id=0&date_from=17.07.2011&date_to=28.12.2011&'.
'board_id=0&price_min=&price_max=&page_start=0';

$req_header =
"POST /actions_site.php?PHPSESSID=sm4gl4jneacv294l64gt6mipn2&JsHttpRequest=13108107929641-xml HTTP/1.0\r\n".
"User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50\r\n".
"Host: voyage.kiev.ua\r\n".
"Referer: http://voyage.kiev.ua/Toursearch/\r\n".
"Content-Length: ".strlen($req_string)."\r\n".
"Content-Type: application/octet-stream\r\n".
"Content-Transfer-Encoding: binary\r\n".
"\r\n";

$request = $req_header . $req_string;

$f = fsockopen('voyage.kiev.ua', 80, $errno, $errstr, 30) or die('Cannot open socket to voyage.kiev.ua:80 '.$errno.' '.$errstr);

fwrite($f, $request);
$content = '';
while(!feof($f)){
$content.= fread($f, 1024);
}
fclose($f);


$content = trim(substr($content, strpos($content, "\r\n\r\n") + 4));
$content = iconv('windows-1251', 'utf-8', $content);

$json = json_decode($content, 1);


echo '<pre>'.htmlspecialchars(print_r($json, 1)).'<pre>';


Спустя 1 день, 19 часов, 55 минут, 3 секунды (18.07.2011 - 10:41) Guest написал(а):
всё классно перед хедером собачку надо было поставить и помоги ещё с кадировкой ероглифы выдаёт

Спустя 7 минут, 18 секунд (18.07.2011 - 10:48) killer8080 написал(а):
Цитата (Guest @ 18.07.2011 - 10:41)
всё классно перед хедером собачку надо было поставить

Ты о чём? blink.gif
Цитата (Guest @ 18.07.2011 - 10:41)
помоги ещё с кадировкой ероглифы выдаёт

а какая кодировка у тебя на сайте? На voyage.kiev.ua - windows-1251, но для функции json_decode нужна utf-8. Для перекодировки применяется функция iconv.

Спустя 12 минут, 15 секунд (18.07.2011 - 11:00) Guest написал(а):
Ты о чём? blink.gif

без собачки ошибку выдаёт в хедере ?

Спустя 1 минута, 10 секунд (18.07.2011 - 11:01) Guest написал(а):
а с кодировкой спасибо за подсказку щас попробую

Спустя 6 минут, 37 секунд (18.07.2011 - 11:08) killer8080 написал(а):
Цитата (Guest @ 18.07.2011 - 11:00)
без собачки ошибку выдаёт в хедере ?

значит где то перед header был вывод контента (в моём варианте его нет) или файл скрипта сохранён в кодировке urt8 с BOM

Спустя 5 минут, 42 секунды (18.07.2011 - 11:14) Guest написал(а):
Цитата (killer8080 @ 18.07.2011 - 08:08)
Цитата (Guest @ 18.07.2011 - 11:00)
без собачки ошибку выдаёт в хедере ?

значит где то перед header был вывод контента (в моём варианте его нет) или файл скрипта сохранён в кодировке urt8 с BOM

да я забыл что строку тоже можно назвать контентом

Спустя 1 час, 14 минут, 57 секунд (18.07.2011 - 12:29) Guest написал(а):
спасибо всё классно осталась одна ещё проблемка при большом выводе информации появляются вкладки продолжения 12...56 а контент выдаёт только с 1-ой вкладки можно както достать и с других вкладок ????????????

Спустя 2 минуты, 43 секунды (18.07.2011 - 12:31) ADiel написал(а):
Парсить ссылки и циклом запрашивать

Спустя 5 минут, 9 секунд (18.07.2011 - 12:37) Guest написал(а):
Цитата (ADiel @ 18.07.2011 - 09:31)
Парсить ссылки и циклом запрашивать

да нет там так не получится

Спустя 18 минут, 36 секунд (18.07.2011 - 12:55) killer8080 написал(а):
Guest
подозреваю, что за это отвечает параметр page_start=0 в post запросе. Попробуй подставить туда 50, по идее должен вывести следующие 50 объявлений.

Спустя 28 минут, 51 секунда (18.07.2011 - 13:24) Guest написал(а):
да, конечно в каждой вкладке по 50 тоесть в 10 будет 450
<a class="page_list" onclick="toursearch_result(50)" href="javascript:void(0);" accesskey="37">2</a>
.
.
.
<a class="page_list" onclick="toursearch_result(450)" href="javascript:void(0);" accesskey="37">10</a>

как бы узнать число хранящееся в последнем toursearch_result(?) для того чтоб оно подставлялось page_start

Спустя 10 минут, 2 секунды (18.07.2011 - 13:34) killer8080 написал(а):
ну так выдёргивай значение из последний ссылки.

Спустя 54 минуты, 1 секунда (18.07.2011 - 14:28) Guest написал(а):
как его так выдернуть и подставить с помощью яваскрипт ?

Спустя 51 минута, 2 секунды (18.07.2011 - 15:19) killer8080 написал(а):
а зачем js? Ты же эмулируешь аякс запрос на php, ну так им и обрабатывай. Делай регулярку и доставай нужные значения из ссылок в тексте.


например так:
preg_match_all('#<a class="page_list" onclick="toursearch_result\((\d+)\)"#', $text, $match);

$n = isset($match[1]) ? end($match[1]) : 0;

Спустя 2 часа, 36 минут, 6 секунд (18.07.2011 - 17:55) Guest написал(а):
page_start- это с какой позиции выводить

Спустя 15 дней, 18 часов, 46 минут, 38 секунд (4.08.2011 - 12:42) pernik написал(а):
Спасибо killer8080 помог очень

Спустя 2 часа, 10 минут, 55 секунд (4.08.2011 - 14:53) Guest написал(а):
в аналогичном примере не могу найти ошибку
<?header("Content-Type: text/html; charset=utf-8");
$req_string =
'spokey=&uid=2107201&fav=0&bonus=0&price=&resort=&ch1=&ch2=&ch3=&openonly=1&lr=0&pr=&p=0&rows=20&ttype=&fromcity=&tocity=&country=&sorter=p1&board=&pm=9&pref_pm=%2B- &stars=&minprice=&nights=&pagenum=&dateFrom=17.09.2011&hotelKey=000&adult=2&child=0&hotelArray=&resortArray=&cod=&test=303';

$req_header =
"POST /first_events.php?test=abc&PHPSESSID=12c496af9fa9f80674f0015b555e8675&abc13108107929641-xml HTTP/1.0\r\n".
"User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50\r\n".
"Host: www2.turtess-online.com.ua/search\r\n".
"Referer: http:turtess-online.com.ua/search/\r\n".
"Content-Length: ".strlen($req_string)."\r\n".
"Content-Type: application/octet-stream\r\n".
"Content-Transfer-Encoding: binary\r\n".
"\r\n";

$request = $req_header . $req_string;

$f = fsockopen('turtess-online.com.ua', 80, $errno, $errstr, 30) or die('Cannot open socket to turtess-online.com.ua:80 '.$errno.' '.$errstr);




fwrite($f, $request);
$content = '';
while(!feof($f)){
$content.= fread($f, 1024);
}
fclose($f);


$content = trim(substr($content, strpos($content, "\r\n\r\n") + 4));
$content = iconv('windows-1251', 'utf-8', $content);

$json = json_decode($content, 1);

$text= substr(htmlspecialchars(print_r($json, 1)),0,120);
print_r($json);

$a= htmlspecialchars(print_r($json, 1));
echo '<pre>'.$a.'</pre>';

Спустя 37 минут, 8 секунд (4.08.2011 - 15:30) killer8080 написал(а):
Ну во первых в заголовке неправильно прописан хост
"Host: www2.turtess-online.com.ua/search\r\n".

нужно
"Host: www2.turtess-online.com.ua\r\n".

путь должен быть прописан в uri, а не в хосте
"POST /search/first_events.php?test=abc&PHPSESSID=12c496af9fa9f80674f0015b555e8675&abc13108107929641-xml HTTP/1.0\r\n"


PS и на будущее, обрамляй код тегами, чтоб глаза не ломать :)

Спустя 22 минуты, 41 секунда (4.08.2011 - 15:53) Guest написал(а):
так тоже нечего не выдаёт не могу понять в чём загвоздка

Спустя 47 минут, 10 секунд (4.08.2011 - 16:40) killer8080 написал(а):
так вроде работает
header("Content-Type: text/html; charset=utf-8");
$req_string =
'spokey=&uid=2107201&fav=0&bonus=0&price=&resort=&ch1=&ch2=&ch3=&openonly=1&lr=0&pr=&p=0&rows=20&ttype=&fromcity=&tocity=&country=&sorter=p1&board=&pm=9&pref_pm=%2B- &stars=&minprice=&nights=&pagenum=&dateFrom=17.09.2011&hotelKey=000&adult=2&child=0&hotelArray=&resortArray=&cod=&test=303';

$req_header =
"POST http://www2.turtess-online.com.ua/search/first_events.php?test=abc&PHPSESSID=f028a5e6936be620b8e7ec5c2edc6847&13124651969320-xml HTTP/1.0".
"User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50\r\n".
"Host: www2.turtess-online.com.ua\r\n".
"Referer: http://turtess-online.com.ua/search/\r\n".
"Content-Length: ".strlen($req_string)."\r\n".
"Content-Type: application/octet-stream\r\n".
"Content-Transfer-Encoding: binary\r\n".
"\r\n";

$request = $req_header . $req_string;

$f = fsockopen('www2.turtess-online.com.ua', 80, $errno, $errstr, 30) or die('Cannot open socket to turtess-online.com.ua:80 '.$errno.' '.$errstr);




fwrite($f, $request);
$content = '';
while(!feof($f)){
$content.= fread($f, 1024);
}
fclose($f);
die('<pre>'.$content.'</pre>');

$content = trim(substr($content, strpos($content, "\r\n\r\n") + 4));

$content = iconv('windows-1251', 'utf-8', $content);

$json = json_decode($content, 1);

$text= substr(htmlspecialchars(print_r($json, 1)),0,120);
print_r($json);

$a= htmlspecialchars(print_r($json, 1));
echo '<pre>'.$a.'</pre>';

Спустя 38 минут, 5 секунд (4.08.2011 - 17:18) Guest написал(а):
да выводит с помощью die('<pre>'.$content.'</pre>'); тогда пожалуйста объясни почему почему там без него можно было обойтись ?????

Спустя 26 минут, 33 секунды (4.08.2011 - 17:44) killer8080 написал(а):
die там не нужен, я просто остановил скрипт на этом шаге и вывел контент, чтоб показать что он его получает.

Спустя 1 месяц, 6 дней, 10 минут, 1 секунда (10.09.2011 - 17:54) Guest написал(а):
а не подскажишь как парсить ексель

Спустя 20 часов, 8 минут (11.09.2011 - 14:02) Winston написал(а):
Guest
PHPExcel
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.