0

在我的 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...
    }
}

}

4

2 回答 2

3

您需要将该调用包装在一个匿名函数中:

    req.onreadystatechange = function() {
      handleResponse(username, game_id); <--- THIS IS THE CALL
    };

您发布的代码将在分配时调用该处理程序。取而代之的是,您需要分配一个在就绪状态更改时将调用的函数。

于 2013-07-25T16:47:39.573 回答
0

您应该设置函数引用onreadystatechange而不执行该函数。您可以使用闭包来实现您想要做的事情。

req.onreadystatechange = function(){
    handleResponse(username, game_id);
}
于 2013-07-25T16:48:33.177 回答