两个xmlhttprequest中的第二个调用没有'不起作用
Second call out of two xmlhttprequest doesn't work
我读了很多关于如何尝试并行生成两个xmlhttprequest的文章,但看起来有些东西不太管用
我有1个php文件。其中包括2.js文件
第一个每隔3秒运行一次xmlhttprequest
我希望第二个按需运行,但每当我触发它时,它都会返回状态4,但responseText
总是空的。(毫无疑问,PHP文件打印出来了,我甚至试着把PHP文件放在window.open('1')
上,看看该文件是否被调用)。
这是第一个JS:
var req1 = createXMLHttpRequest2();
var 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。
谢谢。
使用setTimeout
分离调用,使用with
封装XMLHTTPRequest
:
function xhr()
{
with(new XMLHttpRequest)
{
open("GET",{},true);
setRequestHeader("Foo", "Bar");
send("");
onreadystatechange = handler;
}
}
function handler(event)
{
!!event.target && !!event.target.readyState && event.target.readyState === 4 && ( console.log(event) );
}
setTimeout(xhr, 500);
setTimeout(xhr, 1000);
相关文章:
- curl和fileget_contents在ajax调用后不起作用
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- javascript函数调用不起作用
- javascript验证和ajax调用同时不起作用
- Ajax调用不起作用
- 从PHP调用JS函数不起作用
- jQueryAjax调用在单独的.js文件中不起作用
- HtmlBox(jquery插件)在ajax调用中不起作用
- 函数调用不起作用
- jQuery选择ajax调用中附加的元素不起作用
- jQuery调用keyup事件不起作用
- ng显示“;调用方法“;不起作用
- JavaFX+WebView/Javascript:setTimeOut不起作用调用堆栈来自Java
- .ajax调用在chrome中不起作用
- 为什么第二次调用isNaN时它不起作用
- IE9+IE10 AJAX调用不起作用
- 如果在include文件中使用连接,Jquery ajax调用将不起作用
- Angular 1.5变量在调用一次之前不起作用
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- SPA异步调用在IE 11中不起作用