рдХреНрд░реЙрд╕ рдбреЛрдореЗрди XMLHttpRequest

AJAX рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ XMLHttpRequest рд╣реИред рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рд╕реЗ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред



рдЖрдорддреМрд░ рдкрд░, 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



All Articles