在JS中调用函数不适用于参数

时间:2013-07-25 16:45:48

标签: javascript ajax function

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

}

2 个答案:

答案 0 :(得分:3)

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

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

您发布的代码将在分配时调用该处理程序。而不是那样,你需要分配一个在就绪状态改变时将被调用的函数。

答案 1 :(得分:0)

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

req.onreadystatechange = function(){
    handleResponse(username, game_id);
}