在我的JS文件中,我正在调用另一个函数,起初我只使用它的名称handleResponse
来调用它而没有参数
然后我尝试添加参数(当然通过更改函数签名)并没有得到任何东西,所以我尝试将函数调用为handleResponse()
,即使这样也行不通。
为什么我不能使用括号或使用参数调用我的函数?
以下是功能: 主要:
function sendRequest()
{
var username = "";
var game_id = -1;
username = document.getElementById("username").value;
game_id = document.getElementById("game_id").value;
req.open('GET', 'check_for_opponent.php?username='+username+'&game_id='+game_id);
req.onreadystatechange = handleResponse(username, game_id); <--- THIS IS THE CALL
req.send(null);
}
致电:(我改变了身体,这无关紧要)。
function handleResponse(username, game_id) {
if(req.readyState == 4) {
// DO SOMETHING...
}
}
}
答案 0 :(得分:3)
您需要将该调用包装在匿名函数中:
req.onreadystatechange = function() {
handleResponse(username, game_id); <--- THIS IS THE CALL
};
您发布的代码将在分配时调用该处理程序。而不是那样,你需要分配一个在就绪状态改变时将被调用的函数。
答案 1 :(得分:0)
您应该设置onreadystatechange
的函数引用而不执行该函数。你可以使用闭包来实现你想要做的事情。
req.onreadystatechange = function(){
handleResponse(username, game_id);
}