10.10.2014, 16:41
|
Профессор
|
|
Регистрация: 20.01.2014
Сообщений: 150
|
|
одним XMLHttpRequest одновременно передать и получить
Привет всем!
Нужно одним XMLHttpRequest передать переменную и получить ответ:
xhttp3=new XMLHttpRequest();
xhttp3.onreadystatechange=function() {
if (xhttp3.readyState==4 && xhttp3.status==200) {
document.getElementById('ajax').innerHTML=xhttp3.r esponseText; alert(xhttp3.responseText);}
}
xhttp3.open('POST','server.php',true);
xhttp3.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp3.send("zaca="+Prov);
alert использую чтоб вывести ответ сервера.
сервер:
<?
echo 22;
?>
|
|
10.10.2014, 16:45
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
во первых есть спец теги для выделения кода. во вторых, что именно не получается? посмотри в консоль, может там ошибки какие
|
|
10.10.2014, 16:50
|
Профессор
|
|
Регистрация: 20.01.2014
Сообщений: 150
|
|
Сообщение от skrudjmakdak
|
во первых есть спец теги для выделения кода. во вторых, что именно не получается? посмотри в консоль, может там ошибки какие
|
Отправлять данные отправляет, а ответ в виде числа "22" не приходит.
|
|
10.10.2014, 17:01
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
в network'е (в хроме он так называется) смотрели? что отправляется и что приходит?
|
|
10.10.2014, 17:11
|
Профессор
|
|
Регистрация: 20.01.2014
Сообщений: 150
|
|
Сообщение от skrudjmakdak
|
в network'е (в хроме он так называется) смотрели? что отправляется и что приходит?
|
Я для проверки использую только alert, я же говорю с отправкой нет проблем, код работает, я хачу этим кодом еще и ответ получить в виде числа 22.
|
|
10.10.2014, 19:46
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
var XMLRequest;
(function() {
var req, reqTimeout,
_XMLRequest = XMLHttpRequest || window.ActiveXObject && function() {
return new ActiveXObject('Msxml2.XMLHTTP');
}
XMLRequest = function(action, data, callback, onError) {
var i, keys = [];
if(req) {
clearTimeout(reqTimeout);
req.abort();
req = null;
}
req = new _XMLRequest();
req.open('POST', action, true);
req.onreadystatechange = function() {
if(req.readyState != 4) return;
clearTimeout(reqTimeout);
var reqTmp = req;
req = null;
if(reqTmp.status == 200) callback(reqTmp.responseText);
else if(onError) onError(reqTmp.statusText);
};
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
for(i in data) keys.push(i + '=' + encodeURIComponent(data[i]));
req.send(keys.join('&') || null);
reqTimeout = setTimeout(function() {
req.abort();
req = null;
if(onError) onError('Timeout');
}, 3E4);
}
})();
XMLRequest('server.php', {foo: true}, function(data) {
document.getElementById('ajax').innerHTML = data;
});
Последний раз редактировалось ruslan_mart, 10.10.2014 в 20:59.
|
|
10.10.2014, 20:46
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от Ruslan_xDD
|
keys.join('&') || null
|
А зачем || null? Где ты видел функции с большой буквы? Какое отношение эта функция имеет к XML (о чем намекает ее имя)?
__________________
В личку только с интересными предложениями
|
|
10.10.2014, 20:54
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
danik.js, да ладно, не придирайся, тут всё в порядке. Код взял из своей либы, давно уже писал, у меня ф-ция просто request называется. Тут назвал XMLRequest, чтобы автору было понятнее, что речь идёт о XMLHttpRequest.
Сообщение от danik.js
|
А зачем || null?
|
Ну а тут ты прав, наверное.
|
|
11.10.2014, 22:43
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от wadim
|
Я для проверки использую только alert
|
Из старого, как раз с алертами:
if (link.status==200)
show_totals(link.responseText);
else
alert(decodeURI(link.statusText));
Да, на сервере
$errors = function($code) {
$codes=array(
'403'=>'Требуется авторизация',
'404'=>'Продукт не найден',
'500'=>'Сбой на сервере',
);
header('HTTP/1.0 '.$code.' '.rawurlencode($codes[$code]));
exit;
};
Последний раз редактировалось kostyanet, 11.10.2014 в 22:46.
|
|
|
|