爲空

2012-02-24 31 views
0

爲什麼這個函數返回響應我的事件點擊寫了一個函數如下爲空

$('#ClickMe').live('click', function() { 
    chrome.extension.sendRequest({ method: "getT" }, function (response) { 
     alert(response.data); // Displaying undefined.. 
    }); 
}); 
在後臺頁面

..

function wish(){  
    return "Hey..."; 
} 
chrome.extension.onRequest.addListener(function(request, sender, sendResponse){ 
    if (request.method == "getT"){ 
    sendResponse({data: wish()}); 
    } 
    else 
    sendResponse({}); 
}); 

我不能在內容Script.Please幫助響應我在這。

+0

您是否曾嘗試在背景頁面添加'console.log()'語句來查看究竟是什麼被調用以及何時以及request.method的值?代碼對我來說看起來很好,我想不出爲什麼它不起作用。 – Alasdair 2012-02-24 13:23:30

+0

我無法重現該錯誤。你如何運行'$(「#ClickMe」.....);'? – 2012-02-24 13:33:55

+0

@Rob W我無法理解你的觀點。你能告訴我你想要什麼更多的輸入...... – Exception 2012-02-24 14:01:27

回答

1

你不能在JSON對象中發送那樣的函數參數,你需要首先實例化它,然後把它作爲一個變量傳遞,而不是作爲一個函數,因爲它將它視爲一個Closure,所以當它執行序列化時,它不會包括這一點。

function wish(){  
    return "Hey..."; 
} 
chrome.extension.onRequest.addListener(function(request, sender, sendResponse){ 
    if (request.method == "getT"){ 
    var data = wish(); 
    sendResponse({data: data}); 
    } 
    else 
    sendResponse({}); 
}); 

上面的代碼片段應該工作。

+0

很高興收到你的回覆,並感謝你的回答。 – Exception 2012-02-25 12:45:37