2011-09-16 8 views
0

나는 wireit을 테스트 중이며 새로운 양식 컨테이너 등을 만들 수 있습니다. 나는 아약스 어댑터 예를 테스트하고 같은 configed 한 :Wireit json 출력을 얻는 방법?

WireIt.WiringEditor.adapters.Ajax.config = { 
    saveWiring: { 
     method: 'PUT', 
     url: 'http://voipd7.localhost/wirings.json' 
    }, 
    deleteWiring: { 
     method: 'GET', 
     url: function(value) { 
      if(console && console.log) { 
       console.log(value); 
      } 
      // for a REST query you might want to send a DELETE /resource/wirings/moduleName 
      return "fakeSaveDelete.json"; 
     } 
    }, 
    listWirings: { 
     method: 'GET', 
     url: 'listWirings.json' 
    } 

저장 URL에 "http : //voipd7.localhost/wirings.json을"단지 $ _GET 나에 $ _POST를 기록하는 PHP 페이지입니다 파일을 출력하지만 출력되는 유일한 것은 다음과 같습니다.

Array 
(
    [q] => wirings.json 
) 

내가 누락 된 것이 있습니까? 이것이 get 또는 post를 통해 json 물건을 보내야 할까?

답변

0

제공된 구성에서 저장 작업을 수행하는 HTTP 방법이 PUT임을 알 수 있습니다. 이 방법을 사용할 때 수퍼 글로벌 변수 $_POST 또는 $_REQUEST에는 게시 된 데이터가 포함되어 있지 않습니다. $_GET에는 여전히 쿼리 문자열의 데이터가 있습니다. 이 방법은 PUT

이 게시 된 데이터를 분석하기 위해 다음의 몇 가지를 수행합니다

$vars = array(); 
parse_str(file_get_contents("php://input"), $vars); 

PUT 방법은 입력으로 파일을받을 것으로 기대하고있다. 따라서 file_get_contents을 사용하고 parse_str은 URL을 통해 전달 된 쿼리 문자열 인 것처럼 인수를 구문 분석합니다. http://www.lornajane.net/posts/2008/accessing-incoming-put-data-from-php

하나의 참고 사항 : :이 아주 좋은 기사에 대한 응답을 기반으로

$vars = array(); 
if($_SERVER['REQUEST_METHOD'] == 'GET') { 
    $vars = $_GET; 
} else if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $vars = $_POST; 
} else if($_SERVER['REQUEST_METHOD'] == 'PUT') { 
    parse_str(file_get_contents("php://input"), $vars); 
} 

: 일반적으로 웹 서버가 PUT 방법을 허용하지 않도록 구성되어 있지만,이 방법에 관계없이 사용의 데이터 변수를 추출하려면 PUT 요청이 기존 파일에 대한 것임을 아파치가 알게된다면,이 파일을 호출하여 요청을 처리하고, 위의 코드를 파일에 사용하여 전송 된 매개 변수를 추출 할 수있다.

+1

아, 저것은 저를 얻고있었습니다. 나는 그것을 가져 오기에서 포스트로 바꿨고, 아무것도 (file_get_contents와 함께) 지금까지는 아무것도주지 못했습니다. GET과 POST는 여전히 작동하지 않지만 와이어트 버그 여야합니다. – that0n3guy

관련 문제