2013-01-04 82 views
0

用下面的代碼,點擊按鈕不調用handleData()函數, 如果我用匿名函數的方式(裏面是/ * * /),它工作。

有人可以解釋什麼問題是?以及如何解決它? 我想從$(document).ready(...)調用全局函數。

<html> 
<head> 
<script src="js/jquery/jquery-1.7.2.min.js"></script> 

<script> 
    function handleData(data, status) { 
     $("#p1").text(data); 
    }; 

    $(document).ready(function() { 

     $("button").click(function() { 
      $.get("testAsync?name=value", handleData(data, status)); 
     }); 

     /* 
     $("button").click(function() { 
      $.get("testAsync?name=value", function(data, status) { 
       $("#p1").text(data); 
      }); 
     }); 
     */ 
    }); 
</script> 
</head> 
<body> 
    <button>Send an HTTP GET</button> 
    <p id="p1"></p> 
</body> 
</html> 
+0

這是因爲它期望一個函數而不是函數調用。如果handleData返回一個函數,它也可以工作 – mplungjan

回答

6

的功能,因爲你有後(arguments)被立即調用。

由於參數是有序的,僅僅通過handleData

+0

謝謝,這就是它的原因 – huican

5

變化從

$.get("testAsync?name=value", handleData(data, status)); 

的函數調用

$.get("testAsync?name=value", handleData); 

在第一種情況下,你會立即執行該功能..只是在傳遞函數指針,並預期它會工作..

+0

那就是..謝謝 – huican

+0

@ huican ..很高興幫助:) –

相關問題