언젠가 AJAX 호출시 내 DEV 환경 (두 개의 다른 상자)에서 내 WordPress 플러그인이 실패하기 시작했습니다.json_encode를 호출하면 외부 '+'가 출력 버퍼에 저장됩니다.
$t = json_encode(<some array>);
관계없는 +
문자가 출력 버퍼에 삽입 : 내가 볼 것은 내가 호출 할 때이다. 나는 ob_get_content()
호출의 결과를보고 이것을 관찰했다. $t
에 정확한 JSON 결과가 표시되고 <some array>
의 내용은 중요하지 않습니다.
필자는 WordPress의 컨텍스트 내에서만 발생하는 것으로 보아서 PHP 문제는 아니라고 판단했습니다.
내 플러그인에 다음 함수에 절연 :
function my_action_callback() {
$a = array("a" => "orange", "b" => "banana", "c" => "apple");
echo json_encode($a);
die(); // this is required to return a proper result
}
my_action_callback
는 AJAX 호출에 워드 프레스에 의해 호출되는 등록 된 콜백 함수이다. 나는 json_encode
의 결과를 에코 대신 변수에 할당 할 수 있습니다. 결과는 좋지만 출력 버퍼를 확인하면 단 하나의 +
이 삽입되었습니다.
불행히도이 문제를 디버깅하기에는 너무 오래 기다렸으므로 내 환경에서 변경 한 사항을 알 수 없습니다. 어디서부터 시작해야할지 모르겠습니다.
환경은 내가 결과를 반향하고 있지 않다 때문에, json_encode
출력 버퍼에 아무 것도 넣어 호출하는 것입니다 왜
워드 프레스 3.2.1을 실행 PHP 5.3.5인가?
모든 파일을 살펴보십시오. ob_start와 ob_get_contents 사이에 어딘가에 "+"가있는 것 같습니다. – halfdan
이 문제를 재현 할 수있는 컴팩트 버전의 코드를 만들 수 있습니까? – jprofitt
아마도이 문제와 관련이 있습니다 : http://stackoverflow.com/questions/6811845/php-json-encode-changing-spaces-to-plus-symbols –