1
我已經閱讀了很多如何嘗試並行地創建兩個xmlhttprequest,但看起來有些東西不起作用。
我有1個PHP文件。其中包括2個.js文件。
第一次每3秒運行xmlhttprequest
。
我希望第二個按需運行,但每當我觸發它,它將返回狀態4,但responseText
始終是空的。 (這個PHP文件毫無疑問地打印出來了,我甚至試圖穿上PHP文件window.open('1')
來查看文件是否被調用,而不是)。第二次調用兩個xmlhttprequest不起作用
這裏是第一JS:
var req1 = createXMLHttpRequest2();
變種user_redirected = FALSE;
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空的responseText。
謝謝。
你確定的PHP呼應的東西嗎?如果您使用相同的參數手動打開URL,會發生什麼情況? – dievardump
我確定,進一步的模式中,我使用'test.php'切換'delete_waiting_games_for_username.php',它只使用JS打開頁面,並且頁面未打開。 – SagiLow
嘗試在window.open上使用alert()。看看你看到的是什麼 – gezzuzz