PDA

Просмотр полной версии : Пост запрос аяксом ...


Doom123
25.08.2008, 17:45
Как эмитировать пост запрос посланый аяксом ....?
Я попытался отправить теже даные на тотже файл и чтото ничё не вышло ..
я туплю?

PandoraBox
25.08.2008, 17:55
var Ajax = window.XMLHttpRequest

Добавь перед send() Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

BlackSun
25.08.2008, 20:19
Я вот так делал .. если надо еще ответ получить от сервера, то добавь
httpRequest.onreadystatechange = function() { твой_обработчик(httpRequest); };
перед httpRequest.open('POST', url, true);

function getResult($var)
{
var httpRequest = false;
var url = 'index.php';

if (window.XMLHttpRequest)
{
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType)
{
httpRequest.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject)
{
try
{
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

httpRequest.open('POST', url, true);
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpRequest.send('varvar=' + encodeURI($var));
}

nc.STRIEM
25.08.2008, 20:25
небольшой набор функций для работы с ajax

// (c) nc.STRIEM

var resultId;

function getXmlHttp()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
xmlhttp = new XMLHttpRequest();

return xmlhttp;
}

function sendRequest(url, _resultId, method, query)
{
resultId = _resultId;
var httpRequest = getXmlHttp();
var timeout;
if(method == null)
method = 'GET';
window.document.getElementById(resultId).innerHTML = '<center><img src="img/load.gif"></center>';
httpRequest.open(method, url, true);

httpRequest.onreadystatechange = function()
{
if (httpRequest.readyState != 4)
return;
clearTimeout(timeout);
if (httpRequest.status == 200)
window.document.getElementById(resultId).innerHTML = httpRequest.responseText;
else
handleError(httpRequest.statusText);
}

if(query != null)
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
httpRequest.send(query);


timeout = setTimeout( function(){ httpRequest.abort(); handleError("Time over");}, 10000); // таймаут
return false;
}

function GetContents(url, method, query)
{
var httpRequest = getXmlHttp();
var timeout;
if(method == null)
method = 'GET';
httpRequest.open(method, url, false);
if(query != null)
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
httpRequest.send(query);
if (httpRequest.status == 200)
return httpRequest.responseText;
return httpRequest.status+' '+httpRequest.statusText;
}

function handleError(message)
{
window.document.getElementById(resultId).innerHTML = message;
}

function element(id)
{
return encodeURIComponent(window.document.getElementById( id).value);
}

пример использования http://taran.su/guest/

mr.The
25.08.2008, 21:22
я так понял что ТС нужен не аякс запрос, а эмитация его, с помощью скриптового языка?
Я попытался отправить теже даные на тотже файл и чтото ничё не вышло ..
а какой код ответа от сервера?

Doom123
25.08.2008, 21:24
mr.The ответ есть ....


HTTP/1.1 200 OK Server: Zeus/4_3 Date: Mon, 25 Aug 2008 17:29:38 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Content-Type: text/xml; charset=ISO-8859-1 Expires: Thu, 19 Nov 1981 08:52:00 GMT Transfer-Encoding: chunked Pragma: no-cache X-Powered-By: PHP/4.3.4 63 Unknown Function 1. 0


я снифером словил пост данные


Method=POST /ajax/event_flash.php HTTP/1.1

POSTDATA=xajax=event_flash_set&xajaxr=1219678363229&xajaxargs[]=47534287&xajaxargs[]=mtcFlashCallback


вот то что отсылается ... я пытался повторить ....


$fp = fsockopen(_HOST, _PORT, $errno, $errstr, 30);

$out .= "POST /ajax/event_flash.php HTTP/1.1 \r\n";
$out .= "Host: " . _HOST . "\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
$out .= "Content-Length: " . strlen($data) . "\r\n";
$out .= "Referer: " . _HOST . "/\r\n";
$out .= "User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)\r\n";
$out .= $cook;
$out .= "Connection: close\r\n\r\n";
$out .= $data;

fwrite($fp, $out);

while (!feof($fp))
$answer .= fgets($fp, 1024);

fclose($fp);


снифер ещё какието пост данные словил но они были зашифрованы и всякие иероглифы место даных были. ..

Doom123
25.08.2008, 21:50
тьфу млин ... я идиот .. :D там параметр xajaxr задаётся какойта функцией .... и каждый раз новое значение ... еси его поменять то выйдет ошибка


Error: The XML response that was returned from the server is invalid
Response:

а терь х знает де брать этот xajaxr

mr.The
25.08.2008, 22:21
а терь х знает де брать этот xajaxr
парси с пред идущей страницы. разбери полностью код ajax запроса, какие данные откуда беруться ну и тд...

для перехвата http заголовков юзай Proxomitron. работает как локальный проксик, и заголовки оч хорошо показывает. только отключи все фильтры и включи показ post данных.

Doom123
25.08.2008, 22:37
mr.The я ужо забросил это дело =)

с моими знания аякса копать 30 JS файлов ... =)) не стоит это того )))


пля + закончились =\\