Это должно работать (в JQuery):
$.post('check.php',{'c_user':c_user})
$.done(function(data) {
if(data == '0'){
window.location.href = "example.php";
}
});
Общий формат является
$.post('URL_SENDING_TO',function (data returned from request) {
dosomething();
});
Если вы хотите отправить данные, вы можете использовать .done
, например:
$.post('URL_SENDING_TO',{'datatosend':'value1','datatosend2':'value2'})
.done(function (data returned from request) {
dosomething();
});
Из, если вы хотите сделать это без JQuery, это должно работать (ссылка http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp и http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_database):
var xmlhttp;
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) {
if (xmlhttp.responseText == '0') {
window.location.href = "example.php";
}
}
}
var time_five_sec = setInterval(
function() {
xmlhttp.open("POST", "check.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("c_user=" + c_user);
}, 5000);
Если вы хотите изменить последнюю функцию к SetTimeout (в соответствии с рекомендациями Jasper), можно было бы написать:
function timed_ajax_request() {
setTimeout(function() { ajaxrequest() }, 5000);
}
function ajaxrequest() {
xmlhttp.open("POST", "check.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("c_user=" + c_user);
timed_ajax_request();
}
timed_ajax_request();
Это будет посылать его в петлю, где она называется функцией timed_ajax_request
первого, а затем, когда запрос Ajax отправляется, он под названием timed_ajax_request
снова, так как это Timeout
, он будет ждать 5000 мс (или 5 секунд) перед вызовом запроса.
Если вы хотите, чтобы пользователь GET
вместо POST,
изменения линии:
xmlhttp.open("POST", "check.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("c_user=" + c_user);
к:
xmlhttp.open("GET", "check.php?c_user=" + c_user, true);
xmlhttp.send("c_user=" + c_user);
И это должно работать так же. То же самое относится и к JQuery, изменить его с:
$.post('check.php',{'c_user':c_user})
$.done(function(data) {
if(data == '0'){
window.location.href = "example.php";
}
});
к:
$.get('check.php',{'c_user':c_user})
$.done(function(data) {
if(data == '0'){
window.location.href = "example.php";
}
});
Итак, в заключение, чтобы делать то, что вы хотели бы сделать в вашем вопросе, в том числе рекомендации Джаспера, можно было бы написать :
var xmlhttp;
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) {
if (xmlhttp.responseText == '0') {
window.location.href = "example.php";
}
}
}
function timed_ajax_request() {
setTimeout(function() { ajaxrequest() }, 5000);
}
function ajaxrequest() {
xmlhttp.open("GET", "check.php?cu=" + c_user, true);
xmlhttp.send();
timed_ajax_request();
}
timed_ajax_request();
вам нужно проверить ответ ajax и изменить window.location.href – DevZer0
, разместите свой код. –
Я вижу, что вы устанавливаете интервал на 100 мс. Если латентность пользователя медленнее, чем вы можете начать выполнять запросы стека. Я бы рекомендовал использовать 'setTimeout' и устанавливать новый таймаут каждый раз, когда возвращается ответ AJAX. Таким образом, за один раз будет ожидаться только один запрос. – Jasper