1

크롬 확장 콘텐츠 스크립트에서 POST을 제어하는 ​​서버로 보냅니다. 매니페스트에서 권한을 설정했습니다. 여기 내 XHR 코드입니다. (나는 이것을 위해 jQuery를 피하고 싶다.) 그 빈 responseTextCIH 크롬 확장 프로그램의 XHR

var xhr = new XMLHttpRequest(); 
    xhr.open("POST",'http://mysite.com/make',true); 
     xhr.onreadystatechange=function() { 
      if (xhr.readyState == 4) { 
       var res = JSON.parse(xhr.responseText); 
       console.log(res); 
      } 
    } 

    xhr.send({'textbox':data[0].user,'from':'extension'}); 

data[0].user를 보내는 것은 내 CI 컨트롤러의 트위터 API

에서 직접 가지고 객체 내가

$user = $this->input->get_post('textbox', TRUE); 
$from = $this->input->get_post('from', TRUE); 

$fullURL = 'http://www.google.com'; //example of a URL from code. 

$json = $this->output->set_content_type('application/json'); 
$json->set_output(json_encode(array('URL' => $fullURL))); 

응답 텍스트가 빈

이다 가지고있다

jquery 전화가 잘 작동

$.post("http://mysite.com/make", { 'textbox': data[0].user, 'from':'jquery' }, 
    function(data) { 
    console.log(data); 
}); 
+1

당신이 방화 광/크롬 개발 도구를 사용하고 있습니까? 서버가 보내는 응답을 확인하십시오. 그리고 한 걸음 뒤로 ... JSOn string이 PHP를 생성하는 것을 로깅 해보시겠습니까? –

+0

[chromePHP] (http://www.chromephp.com/)가 설치되었습니다. 디버깅을 시도합니다. – Chamilyan

+0

하지만 그 전에는 시도해보십시오 xhr.post ("textbox ="+ data [0] .user + "& from = extension"); 대신 수행하십시오. 나는 그것이 효과가 있다고 생각한다. –

답변

1

이유는 간단합니다. JQuery 게시 메소드는 JSON을 허용 한 다음이를 문자열로 변환하고 서버로 전송할 수 있습니다.

당신이 할하려고하는 것은 바로 여기에 JSON을 보내는 것입니다 :

xhr.send({'textbox':data[0].user,'from':'extension'}) // Incorrect way

NULL을 받아 들여야 하나 방법을 보내 또는 일반적으로 같은 QueryString을 매개 변수로 구성되는 문자열 .

xhr.send("textbox="+ data[0].user + "&from=extension"); // Correct way

는 데이터가
로 POST 요청 매개 변수에서 텍스트 상자와 함께 해당 URL로 이동하는지 확인합니다. 및 queryString은 처럼 생성됩니다. 텍스트 상자 = username1234 & from =은 URL과 함께 머리글과 함께 가져 오기와 달리 패킷 본문에 있습니다.

jQuery의 post 메서드를 사용하면 JSON을 사용하여 보내는 데이터의 형식을 지정하고 내부적으로이를 매개 변수를 보내기 위해 queryString으로 변환하는 것이 더 간단 해집니다. XHR 개체로 직접 자바 스크립트 개체를 보낼 수 없습니다!

또한이 예제를 체크 아웃 :

http://beradrian.wordpress.com/2007/07/19/passing-post-parameters-with-ajax/

+0

내 서버 코드가 쿼리 문자열을 허용하지 않습니다. 어쨌든 요청에 ​​쿼리 문자열을 추가하지 않고이 작업을 수행 할 수 있습니까? – Chamilyan

+0

서버 코드는 게시 매개 변수 만 허용합니다. CodeIgniter의 $ this-> input-> get_post ('textbox', TRUE)는 POST 요청에서 해당 컨트롤러로 텍스트 상자 매개 변수를 가져옵니다. 하지만 보안 및 기타 측면을 보장합니다. AJAX 코드에서 send()에 대한 변경 사항을 추가해보십시오. –

+0

가 작동하지 않았습니다. 변수를 서버 스크립트로 보내지 않습니다. 나는 서버에서 XHR responseText로 정적 문자열을 반향시킬 수있다. 쿼리 문자열을 사용하도록 설정하지 않았습니다. 그리고 나는 그들을 가능하게 할 수 없다. – Chamilyan

관련 문제