рдЖрдорддреМрд░ рдкрд░, XMLHttpRequest рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
1. XMLHttpRequest рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛
2. рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ (рдСрдиреНрд░реЗрдбрд┐рд╕реНрдЯреЗрдЯрдЪреЗрдВрдЬ)
3. рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдирд╛ (рдЦреБрд▓рд╛) рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ (рднреЗрдЬрдирд╛)
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, XMLHttpRequest рдХреЗрд╡рд▓ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ XMLHttpRequest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреГрд╖реНрда рдХреЗ рд╕рдорд╛рди рдбреЛрдореЗрди рдореЗрдВ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдбреЛрдореЗрди, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдкрддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ / рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдИ, рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдЪреБрдирд╛ рдЧрдпрд╛, рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдкреНрд░реЙрдХреНрд╕реА! рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рд╡рд┐рдзрд┐ред рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
1. XMLHttpRequest рдЕрдкрдиреЗ рдбреЛрдореЗрди рдкрд░ рдПрдХ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐, рдкрддреЗ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реБрдП
2. PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдмрджрд▓реЗ рдореЗрдВ, рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреЗрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ
рдПрдХ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рдо, рдЬреЛ рдПрдХ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ, CURL рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдпрд╣рд╛рдБ рд╕реНрд╡рдпрдВ рдкреНрд░реЙрдХреНрд╕реА.рдлрдкреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
<?php
header("Content-Type: text/xml; charset=windows-1251");
//
$method = (empty($_GET['method'])) ? 1 : $_GET['method'];
$url = $_GET['url'];
$url = (empty($_GET['url'])) ? die("no url") : $_GET['url'];
$params = $_GET['params'];
//
$allowed = array(1 => "~http:\/\/(www\.)?habrahabr\.ru\/~", 2 => "~http:\/\/(www\.)?el\-egoisto\.com\/~");
$count = count($allowed);
for ($i = 1; $i <= $count; $i++)
{
if (preg_match($allowed[$i],$url))
{
// -
$ch = curl_init();
switch ($method)
{
case 1:
// GET
curl_setopt($ch, CURLOPT_URL, $url."?".$params);
break;
case 2:
// POST
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
break;
}
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
$header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
$xml = substr($response,$header_size);
echo $xml;
curl_close($ch);
exit();
}
}
?>
XMLHttpRequest рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ 3 рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ:
1. рд╡рд┐рдзрд┐ - GET рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП 1 рдФрд░ POST рдХреЗ рд▓рд┐рдП 2
2. url - рдЕрдиреБрд░реЛрдз рдкрддрд╛
3. рдкрд░рдо - рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░
PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕реЗ url рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ (regexp $ рдХреА рдПрдХ рд╕рд░рдгреА рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ) рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИред
JS рд╕реЗ, рдЗрд╕ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
XMLHttpRequest - CreateReq рдФрд░ GetData рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдХрд╛рд░реНрдп рд╣реИрдВред рдкрд╣рд▓рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
function CreateReq()
{
var req = null;
if (window.XMLHttpRequest)
{
try
{
req = new XMLHttpRequest();
}
catch(e)
{
req = null;
}
}
else if (window.ActiveXObject)
{
try
{
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
req = null;
}
}
}
return req;
}
function GetData(url,callback)
{
req = new CreateReq;
if(req != null)
{
req.onreadystatechange = callback;
req.open('GET', url, true);
req.send(null);
}
else alert(" ..");
}
рдЖрдЗрдП, рд╣рдорд╛рд░ рд╕реЗ рдХрд░реНрдо рдФрд░ рд╢рдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ GET рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ :)
function GetHabraMe()
{
GetData("/proxy.php?method=1&url="+encodeURIComponent("http://habrahabr.ru/api/profile/lordeg"),GetHabraCallback);
}
function GetHabraCallback()
{
if(req.readyState == 4)
{
if(req.status == 200)
{
var xmlDoc = req.responseXML;
var karma = xmlDoc.getElementsByTagName("karma").item(0).firstChild.data;
var rating = xmlDoc.getElementsByTagName("rating").item(0).firstChild.data;
var place = document.getElementById("data");
if(place != null)
{
place.innerHTML = ": "+karma+"<br>: "+rating+";
}
}
}
return false;
}
GetHabraMe рдкреНрд░реЙрдХреНрд╕реА.php рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ habrahabr.ru/api/profile/lordeg рдХреЗ рд▓рд┐рдП рдПрдХ GET рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЖрдИрдбреА "рдбреЗрдЯрд╛" рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдХреЛ "рд╡рд╛рдкрд╕" рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ:
function GetPings()
{
var d_topic = document.getElementById("topic");
if (d_topic.innerHTML == " ")
{
GetData("/proxy.php?method=2&url="+encodeURIComponent("http://el-egoisto.com/frontend.php")+"┬╢ms="+encodeURIComponent("func=recent&owner=9&id=1&cutoff=48"),GetMyLastPingsCallback);
}
}
"рдпреБрджреНрдз рдХреА рд╕реНрдерд┐рддрд┐" рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - lord-phoenix.com (рд▓рд┐рдВрдХ "рд╡рд░реНрддрдорд╛рди рд╕рдВрдЧреАрдд" рдФрд░ "рд╣реИрдмреНрд░рд╛рд▓реНрдбрдЧреЗрдЧ") :)
рдореИрдВ рдореВрд▓ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдмреНрд▓реЙрдЧ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдИред рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд▓рд╛рдн рд╣реЛрдЧрд╛ред
рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА:
1. xmlhttprequest.ru
2. ru.wikipedia.org/wiki/XMLHttpRequest
3. ru.wikipedia.org/wiki/AJAX
4. ru.wikipedia.org/wiki/CURL