Примеры работы с 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
короче аякс не умеет работать с чужими адресами сайтов
в песочнице работать не будет по причине выше написанного
luciferdonghua
google
Протестил везде работает, только адресок должен быть на тот же домен где запущено.
Удобней и проще чем 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.
Ничего не понимал до того, как попал на этот сайт.
Огромное спасибо автору. Просто огромнейшее!
Ваше число минимум на порядок больше, чем Number.MAX_VALUE, а значит оно интерпретируется как Infinity. fun online run 3 running game
Классная подача материала продолжайте в том же духе!
sport maison avec Vibro shaper
Я отправлял комментарии с "Аякс", это было немного сложно, но мне удалось сделать это, используя ресурсы, которые я нашел в интернете. basketball legends
Но на самом деле настроек используемых при отправке ajax запросов может быть куда как больше.
2048
With just one click, you can play the best game ever, you can play this game on any mobile or laptop roblox robux generator no human verification
A good article, a good book can change the fate of so many people. Thanks for the valuable sharing, please keep it up to date and I will always follow you. fnf 2
Roksa krakow dzielnice
Roksa pl gdansk
Roksa wolow
Roksa mszana
Roksa radzyń podlaski
A very interesting topic that I have been looking at, I think this is one of the most important information for me. And I'm glad to read your post. Thanks for sharing! poppy playtime
It proved to be Very helpful to me and I am sure to all the commentators here! fnf
Everything is very open and honest, and the challenges are broken down in great detail. The information is without a doubt beneficial to have. Is my website extremely successful in terms of making money? Please take a look at this: trap the mouse
The finest game ever is only a click krunker away, and it's compatible with any mobile device or computer.
I am truly overwhelmed by this information. After reading your blog's informative content. I'm excited to learn from your practical expertise. I appreciate you sharing.
fnaf game
I'm bookmarking farmed kitchen and bar this for future reference, thanks for the valuable information!
Great rhythm and challenging gameplay! Even though it's simple, Friday Night Funkin' is really addictive and makes me want to play more.
I’m a regular here now. The menu is baekjeong nyc always creative and full of surprises.
Are you confident with your drawing skills? Can you sketch everything within twenty seconds? Quick Draw will definitely challenge your talent and see how many other people around the world have drawn it.
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.