2011-08-31 206 views
0

我已經成功從Google Extensions中的popup.html調用jQuery POST。但是,成功或錯誤回調函數尚未被調用。我在stackoverflow上搜索過,似乎這是因爲域。Chrome擴展jQuery POST回調

作爲一種解決方案,我嘗試將chrome.extension.sendRequest發送到background.html頁面,並讓後臺頁面執行帖子。但是,background.html頁面上的偵聽器似乎沒有收到請求。

在popup.html,我有

chrome.extension.sendRequest({test:'test123'}, function(response) { 
    alert('hello') 
} 

在background.html,我已經

chrome.extension.onRequest.addListener(
    function(request, sender, resndResponse) { 
     console.log(request) 
    } 
) 

這是爲什麼不工作?還有其他解決方案嗎?

回答

1

它不起作用,因爲警報不是調試擴展的好方法。將所有警報替換爲console.log,尤其是在彈出式窗口中,它只是靜靜地停止執行其餘代碼。

彈出窗口和背景頁面具有完全相同的權限,因此無論在彈出框中工作還是不在背景頁面中的行爲都完全相同。

所以,開始刪除所有警報,並在清單確保您已聲明域的權限:

"permissions": [ 
    "http://destination.com/" 
], 

這應該是足夠的,假設代碼的其餘部分是正確的。

+0

那麼,在彈出窗口中,當我打電話 '$ .post( 「http:// localhost:8888 /」,{test:'test'},function(data){console.log('hi')})',帖子發生了,但console.log沒有發生。我在權限下包含「http:// */*」。是否無法獲得足夠的權限來執行擴展的任何部分/頁面中的回調函數? – user881185

+0

@ user881185我很確定它不會允許你發佈任何東西到8888端口。源端口(80)和目標端口應匹配(並且無法通過清單打開端口,它始終爲80)。 – serg

+0

將其設置爲80也不起作用。 – user881185

0

感謝您的幫助。顯然我是愚蠢的,並且$.post()沒有調用成功函數的原因是我有Tornado發送字符串而不是JSON對象...