2011-08-31 4 views
0

Google 확장 프로그램의 popup.html에서 jQuery POST를 성공적으로 호출했습니다. 그러나 성공 또는 오류 콜백 함수가 호출되지 않았습니다. 나는 주위에 stackoverflow 검색했습니다, 그리고 이것이 도메인 때문에 것 같습니다.크롬 확장 jQuery POST 콜백

해결 방법으로 chrome.extension.sendRequest를 background.html 페이지로 보내고 대신 백그라운드 페이지에서 게시물을 실행하도록했습니다. 그러나 background.html 페이지의 수신기는 요청을 수신하지 않는 것 같습니다. popup.html에서

, 나는 background.html에서

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

왜이

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

을 작동하지 않는, 내가 가지고 있나요? 다른 해결책이 있습니까?

답변

1

경고가 확장을 디버깅하는 좋은 방법이 아니므로 작동하지 않습니다. 모든 경고를 console.log으로 바꾸십시오. 특히 팝업의 나머지 코드가 자동으로 실행을 멈추는 팝업이 표시됩니다.

팝업 및 배경 페이지의 권한이 동일하므로 팝업에서 작동하거나 작동하지 않는 것은 배경 페이지에서 똑같이 작동합니다.

그래서, 모든 경고를 제거하기 시작하고 매니페스트에 당신이 선언 한 도메인 권한을 : 코드의 나머지 부분을 가정 충분해야한다

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

가 올바른지.

+0

글쎄, 팝업창에서 '$. post "http : // localhost : 8888 /", {test : '테스트'}, function (데이터) {console.log ('hi')})'이면 게시물이 발생하지만 console.log는 발생하지 않습니다. 권한 아래에 "http : // */*"를 포함 시켰습니다. 확장 기능의 일부/페이지에서 콜백 함수를 실행할 수있는 충분한 권한을 얻는 것이 불가능합니까? – user881185

+0

@ user881185 8888 포트에 아무 것도 게시 할 수 없다고 확신합니다. 소스 (80) 및 대상 포트는 일치해야합니다 (매니페스트를 통해 포트를 열 수는 없으며 항상 80입니다). – serg

+0

80으로 설정해도 작동하지 않습니다. – user881185

0

모든 도움에 감사드립니다. 분명히 나는 ​​어리 석었고 $.post()이 성공 함수를 호출하지 못하는 이유는 내가 토네이도 대신 JSON 객체 대신 문자열을 보냈다는 것입니다 ...