Примеры работы с AJAX. Отправка GET, POST, HEAD запросов через AJAX на javascript.
Работа с Ajax, отправка post, get, head запросов на сервер.
Прежде чем работать с аяксом поместите на сайте вот такой код:
<div id="result">Тут будет ответ от сервера</div><br /><br />
<div onclick="SendGet();">Отправить GET запрос через Ajax</div><br />
<div onclick="SendPost();">Отправить POST запрос через Ajax</div><br />
<div onclick="SendHead();">Отправить HEAD запрос через Ajax</div><br />
Затем подключите к своему сайту перед тегом ScriptJava фреймворк, добавив вот такой код:
<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script>
Теперь давайте напишем функции для отправки ajax запросов:
<script type="text/javascript">
function SendGet() {
//отправляю GET запрос и получаю ответ
$$a({
type:'get',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
data:{'q':'1'},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'<br />'+data);
}
});
}
function SendPost() {
//отправляю POST запрос и получаю ответ
$$a({
type:'post',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
data:{'z':'1'},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'<br />'+data);
}
});
}
function SendHead() {
//отправляю HEAD запрос и получаю заголовок
$$a({
type:'head',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'<br />'+data);
}
});
}
</script>
Чтобы добавить больше параметров в запрос, достаточно их дописать через запятую
data:{'q':'1','z':'1','s':'2'},//параметры запроса
Для получения ответов, нам нужен файл ajax.php, который будет обрабатывать наши запросы.
Содержимое файла ajax.php
<?php
if(isset($_GET['q'])) {
header("Content-type: text/txt; charset=UTF-8");
if($_GET['q']=='1') {
echo 'запрос GET успешно обработан, q = 1';
}
else {
echo 'карявый GET запрос';
}
}
if(isset($_POST['z'])) {
header("Content-type: text/txt; charset=UTF-8");
if($_POST['z']=='1') {
echo 'запрос POST успешно обработан, z = 1';
}
else {
echo 'карявый POST запрос';
}
}
?>
Залейте файл ajax.php на сервер и можете приступать к тестированию нашего скрипта.
Вот как бы и все.
Но на самом деле настроек используемых при отправке ajax запросов может быть куда как больше.
Вот не сокращенный вариант со всеми опциями запроса:
<script type="text/javascript">
function Send() {
$$a({
type:'get',//тип запроса: get,post либо head
url:'',//url адрес файла обработчика
data:{},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
header:{//заголовки запроса, работают только если установлен response:'xml'
'Content-Type':'application/x-www-form-urlencoded; charset=windows-1251',
'Referer':location.href
},
async:true,//асинхронный если установлено true или синхронный запрос если false
username:'',//имя пользователя если требуется для авторизации
password:'',//пароль пользователя если требуется для авторизации
errrep:true,//отображение ошибок error если true
error:function(num) {//ошибки запроса
var arr=['Your browser does not support Ajax',
'Request failed',
'Address does not exist',
'The waiting time left'];
alert(arr[num]);
},
status:function (number) {//код состояния отправки от 1 до 4
alert(number);//вывожу код состояния отправки
},
endstatus:function (number) {//код состояния запроса например 404, 200
alert(number);//вывожу код состояния запроса
},
success:function (data) {//возвращаемый результат от сервера
alert(data);//вывожу результат запроса
},
timeout:5000//таймаут запроса
});
}
</script>
Ajax запрос можно отправлять в асинхронном или синхронном режимах.
Синхронный режим подразумивает что браузер останавливает свою работу, подвисает и ждет ответ от сервера.
Асинхронный режим позволяет обмениваться данными с сервером без приостановки работы и без подвисания браузера.
Как видите все очень просто благодаря scriptjava фреймворку
|
Загрязнять глобальную область переменными и функциями это очень плохо. Inline onlick события это тоже крайне нерекомендуемая практика.
Код работает, да, но при больших объемах кода это превращается в ад, и новичку который станет брать пример придется очень трудно.
Да и если вы код преднамеренно упростили, то вы невольно оказывете людям медвежью услугу.
обоснуйте свой комментарий
никаких трудностей при большом обьеме кода не будет
засорения глобальной области переменными и функциями - полный бред
напишите свой пример
только без всяких там jquery
чистый javascript код, какой вы считаете что вообще ничего засорять не будет
Вообще не работает!
Т.к. в моём примере, header allredy is output в PHP!
А значит - чертям под хвост вся писанина, т.к. используется header - 2раз!
Как сделать вывод, если страничка сгенерировалась на php в конце файла есть form - А ВАМ НАДО POST-передать в файл?????????????
Ниодного примера нормального нет в Инете!
IE плохо реагирует на $$a, говорит, что предполагается наличие объекта.
Песочница вашего сайта говорит что адрес не найден хотя он есть.
Браузеры не выполняют скрипт (((
адрес должен быть без http
короче аякс не умеет работать с чужими адресами сайтов
в песочнице работать не будет по причине выше написанного
Протестил везде работает, только адресок должен быть на тот же домен где запущено.
Удобней и проще чем jquery
+
Alert все время дает "request failed", почему?
установи
errrep:false
плохая корость интернета
и таймер побольше поставь не 5000 а например 15000
в новой версии scriptjava такого больше нет
установи таймер на 0 в старых версиях, тогда все будет ок
Мелочь, но все же корявый. По глазам бьет.
Спасибо, все работает.
отлично работает.
Подскажите, возник такой тупик, если вместо div повесить событие onclick на ссылку, то скрипт перестаёт работать.
Переделал чуть-чуть
Так работает, но всё-таки хотелочь бы чтобы адрес был адекватным а не просто #
подскажите как сделать
Так, например если есть поля input
Правильно?
И вот $$a, почему 'а' стоит?
Добрый день, если интересно почему 'а', то нужно скачать файл по верхней ссылке, которую автор указал в фреймворке. Скачав этот файл, букву 'а' можно будет исправить на любое другое значение. Всё очень просто. Пример прекрасно работает как на локальном сервере так и через интернет.
Здравствуйте у меня есть такой код
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
document.getElementById("txtHint2").innerHTML=xmlhttp.response;
}
}
xmlhttp.open("GET","includes/get_hotels.php?q="+str,true);
xmlhttp.send();
}
но в диве с ID txtHint2 хочу получит резултат не с фаила get_hotels.php а с фаила например something.php.
тоест послать одну переменную в два php фаил
как мне ето сделать?
Поместил в html
, попробовал:
catalog.php:
, получил:
Refused to set unsafe header "Referer" scriptjava.js:286
(броузер: Chrome, хостер - внутрисетевой linux сервер)
даже "копать" не стал
Так, а почему у меня все ответы в ряд стоят, как сделать, чтобы при нажатии на POST старый POST ответ удалялся и на его место вставал новый
А как вернуть два результата?
На странице имеется две формы. При отправке данных из второй формы скрипт отправляет данные первой формы. Как распределить отправку данных скрипту от двух и более форм.
Функция "error" возвращает не число, а объект.
Более правильная запись:
и под $$a скрывается $.ajax
Доброго времени суток
делаю ваш код на локалки все работает
заливаю на сервер не работае linux
может подскажете в чем прикол
Не знаю почему но не хочет работать.... Причину найти не могу, на всех страницах работает именно на 1 не работает там где нужно!
Только начал заниматься изучением взаимной работы Ajax и PHP.
Ничего не понимал до того, как попал на этот сайт.
Огромное спасибо автору. Просто огромнейшее!