Я читал много о том, как попытаться сделать два xmlhttprequest параллельно, но похоже, что что-то не совсем работает.
У меня есть 1 файл php. который включает в себя 2 файла .js.
Первые пробеги xmlhttprequest
каждые 3 секунды.
Я хочу, чтобы второй запускался по требованию, но всякий раз, когда я его запускаю, он возвращается со статусом 4, но responseText
всегда пуст. (PHP-файл печатает без всяких сомнений, я даже пытался наложить файл PHP только window.open('1')
, чтобы увидеть, что файл вызывается, а его нет).Второй вызов из двух xmlhttprequest не работает
Вот первый JS:
var req1 = createXMLHttpRequest2();
вар user_redirected = ложь;
function createXMLHttpRequest2() {
var ua2;
if(window.XMLHttpRequest) {
try {
ua2 = new XMLHttpRequest();
} catch(e) {
ua2 = false;
}
} else if(window.ActiveXObject) {
try {
ua2 = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
ua2 = false;
}
}
return ua2;
}
function set_user_redirected_false() {
user_redirected = false;
}
function get_user_redirected() {
return user_redirected;
}
function handleResponse(username, game_id, isInvitation) {
if(req1.readyState == 4 && req1.status==200) {
var response = req1.responseText;
if (response == "true") {
// Ask to set the game_accepted var to 1 (user is redirected and not leaving)
user_redirected = true;
if (isInvitation == "true") {
window.location.href = "game.php?game_id="+game_id+"&position=2";
} else {
window.location.href = "game.php?game_id="+game_id+"&position=1";
}
}
else {
setTimeout(function(){sendRequest();}, 3000);
}
}
}
function sendRequest() {
user_redirected = false;
var username = "";
var game_id = -1;
var isInvitation = "false";
username = document.getElementById("username").value;
game_id = document.getElementById("game_id").value;
isInvitation = document.getElementById("invitation").value;
if (isInvitation == "true") {
req1.open('GET', 'check_for_inviter.php?username='+username+'&game_id='+game_id ,true);
} else {
req1.open('GET', 'check_for_opponent.php?username='+username+'&game_id='+game_id,true);
}
req1.onreadystatechange = function(){handleResponse(username, game_id, isInvitation);};
req1.send(null);
}
Это второй JS файл:
function createXMLHttpRequest() {
var ua;
if(window.XMLHttpRequest) {
try {
ua = new XMLHttpRequest();
} catch(e) {
ua = false;
}
} else if(window.ActiveXObject) {
try {
ua = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
ua = false;
}
}
return ua;
}
function delete_waiting_games(username) {
var req2 = createXMLHttpRequest();
req2.open('GET', 'delete_waiting_games_for_username.php');
req2.onreadystatechange = function(){
window.open(req2.readyState+'&'+req2.responseText);
};
req2.send(null);
}
Как вы можете видеть, я открыть новое окно, чтобы увидеть реакцию и состояние готовности (только для тестирования) и я всегда получаю статус 4 и пустой ответText.
Спасибо.
вы уверены, что PHP эхо что-то? Что произойдет, если вы вручную откроете URL с теми же параметрами? – dievardump
Я уверен, что в следующем режиме я переключил 'delete_waiting_games_for_username.php' на' test.php', который использует только JS, чтобы открыть страницу, и страница не открылась. – SagiLow
попробуйте использовать alert() над window.open .. посмотрите, что вы видите – gezzuzz