1

Chrome 확장 프로그램에서 'punch.php'파일을 가져 와서 데이터를 다시받을 수 있지만 문제는 데이터를 전달할 수없는 것입니다. 파일. 내 코드는 다음과 같습니다.Ajax가 데이터를 게시하지 않음, Chrome 확장자

jQuery.fn.punch = function(){ 
    $(this).click(function(){ 
     var punchBtn = $(this); 
     var ProjectMemberId = '1' 
     var ProjectId = '1' 
     var str = 'ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId; 

     var xhr = new XMLHttpRequest(); 
     xhr.open("POST", "http://www.ontimepunchcard.com/scripts/punch.php", true); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4) { 
       $('#PunchBox').html(xhr.responseText); 
       if(xhr.responseText==0) 
       { 
        punchBtn.removeClass('PunchedIn'); 
       } 
       else 
       { 
        punchBtn.addClass('PunchedIn'); 
       } 
      } 
     } 
    xhr.send('ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId); 
    }); 
}//END PUNCH METHOD 

이것은 동일한 코드를 사용하여 일반적인 웹 응용 프로그램을 복제 한 것입니다. 이드의 게시물은 'punch.php'이며 SQL 문에 포함되어 있습니다. 이 문장은 Chrome 확장 프로그램에서 오류가 발생하여 오류 문을 반환 했으므로 실제로 시도한 내용을보기 위해 실제 SQL 쿼리를 반향시키기 시작했습니다. 그 결과 두 ID가 누락 된 SQL 쿼리가 발생 했으므로 오류와 실패한 쿼리가 발생했습니다.

여기에 구문 문제가 있습니까? Google에서해야하는 방식으로 권한을 설정했지만 내 확장 프로그램에서만 데이터를 수신하고 보낼 수는 없습니까? 다른 어리 석음이 여기에 있습니까?

+0

'str'은 절대로 사용되지 않습니다. 그게 의도적 인거야? 코드 예제에서 데이터를 전달하려는 위치는 어디입니까? – bzlm

+1

확장 프로그램에서 해당 파일에 데이터를 게시 할 수있는 적절한 권한이 있습니까? ResponseText에서 "1"을 반환하는 간단한 스 니펫을 만들었습니다. 내가 볼 수있는 한, 스 니펫은 확장 페이지 (콘텐츠 스크립트가 아님)에서 실행되는 한 좋은 것입니다. –

+0

@Mohamed - 그게 전부입니다. 답으로 게시하고 받아 들일 것입니다. – d2burke

답변

2

에서 responseText에서 "1"? 당신이 해당 파일에 데이터를 게시하도록 확장에 적절한 권한이 확실 난 그냥 돌아 간단한 조각을했다 " 내가 볼 수있는 한, 스 니펫은 확장 페이지 (콘텐츠 스크립트가 아님)에서 실행되는 한 좋다. Mohamed Mansour Jan 9 at 23:45 "

분명히 대답이다.

1

를 추가해보십시오 Content-typeContent-length 헤더 :

var str = 'ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId; 

var xhr = new XMLHttpRequest(); 
xhr.open("POST", "http://www.ontimepunchcard.com/scripts/punch.php", true); 
xhr.onreadystatechange = function() { ... } 

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhr.setRequestHeader("Content-length", str.length); 

xhr.send(str); 
관련 문제