2011-03-30 6 views
1

크롬 확장 프로그램을 개발 중이며 내 확장 프로그램에 사용하는 iframe이 있습니다. 이것은 내 iframe을 사용하여 수행하는 작업입니다크롬 확장 xmlhttprequest

"이미지를 내 iframe으로 끌어서 놓을 때 콘텐츠 스크립트 중 하나에서 놓기 이벤트를 처리하고 해당 함수 호출 내 확장 코드를 전달합니다. 거기에서 xmlhttprequest 개체를 만들고 그런 다음 이미지의 URL을 내 서버의 PHP 파일로 보내십시오. "

이 현상이 발생합니다. 나는 "4"의 readyState를 얻었지만 내 브라우저에서 POST 요청이 없습니다. 브라우저의 "네트워크"탭을 선택했지만 브라우저에서 POST 요청이 없습니다 (매니페스트 파일의 권한 섹션에 내 사이트가 나열되어 있음). .>

JScript.js (컨텐츠 스크립트 중 하나)이 같은 내용 스크립트 내 프록시

drop: function(event, ui) { 
    var imgurl=$(ui.draggable).attr('src'); 
    imgurl="IMGURL="+imgurl; 
    _post("www.somedomain.come/testing.php",imgurl,function(result){ alert("success")}); 
    }  

입니다 -

내 코드입니다 ->

_post = function(url, data, callback) 
    { 
     console.log("sending post"); 
     chrome.extension.sendRequest({ 
     msgType:'post', 
     data: data, 
     url:url 
     }, function(response){ 
     alert(response); 
    }); 
    } 
background.html에

이 내 OnRequest 기능 핸들러 ->

chrome.extension.onRequest.addListener(function(request, sender, sendResponse){ 
    if (request.msgType === 'post') { 
     alert("Now in OnRequest function"); 
     // console.log("Now in Onrequest Function"); 
     alert("Url: "+request.url + "\n Data : "+ request.data); 
     ajaxcallingfunction(request); 
     alert("completed the ajax call"); 
     sendResponse("success"); 
     } 

    }); 

var ajaxcallingfunction = function(request){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST",request.url, false); 
    xhr.onreadystatechange = function(){ 
    alert(xhr.readyState); 
    if (xhr.readyState == 4) { 
      alert(xhr.readyState); 
     } 
    }  
    xhr.send(request.data); 
    alert("after xhr call"); 
}; 

답변

0

당신이 바로 당신의 URL을 앞에 http://이?

xhr.readyState 많은 것을 말하지 않고, 그것이 완료되었다는 것을 의미합니다. xhr.status 안에있는 내용을 확인하십시오. 오류 코드가 포함되어 있습니다. 모든 것이 정상이면 200이어야합니다.

xhr.onreadystatechange = function(){ 
    if (xhr.readyState == 4) { 
     alert(xhr.status); 
    } 
} 
+0

고마워요! 그게 효과가 있지만 지금은 문제가 아니라 데이터를 요청을 보낼 수 있습니다. 이미지의 URL을 얻으려고 할 때마다 빈 문자열로 표시됩니다. 내 PHP 스크립트는 간단한 $ _POST [ "IMGURL"] 배열을 사용하여 이미지의 URL을 가져옵니다. 내가 항상 빈 문자열을 얻는 이유는 무엇입니까? 나는 서버에 보내기 전에 데이터 (이미지의 URL)를 가지고 있다고 확신한다. 나는 근본적으로 뭔가 빠져 있니? – Ajai

+0

@Ajai 크롬 콘솔의 네트워크 탭을 열고 해당 요청에서 어떤 데이터가 전송되는지 확인합니다. 모두 괜찮아 보인다면 PHP 쪽에서'print_r ($ _ POST)'를하고 무엇이 수신되는지 확인하십시오. – serg