2013-07-25 50 views
0

在我的JS文件中,我从另一个函数中调用一个函数,起初我只用它的名字调用它没有参数handleResponse
然后我尝试添加参数当然通过改变函数签名)并没有得到任何东西,所以我试图调用函数handleResponse(),甚至没有工作。
为什么我不能使用括号或使用参数来调用我的函数?在JS中调用一个函数不能用于参数

这里的功能是: 主:

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

如何获得handleResponse中的req.readyState?它是从父功能吗? – Learner

回答

3

你需要用该呼叫在一个匿名函数:

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

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

+0

谢谢,它的作品,这是什么匿名函数? – SagiLow

+0

匿名函数是包裹在“handleResponse”调用中的函数。它是匿名的,因为它没有名字;这就是全部意思。 – Pointy

0

你应该设置功能参考onreadystatechange和不执行功能。您可以使用闭包实现您正在尝试执行的操作。

req.onreadystatechange = function(){ 
    handleResponse(username, game_id); 
} 
相关问题