2012-03-12 3 views
0

내 시스템은 PHP에서 데이터를 검색하기 위해 일부 MySQL 쿼리를 실행합니다. 아래에 배열과 유사한 구조화되고 검색되는 데이터 : PHP에서 JS로 JSON AJAX를 통해 16 진수로 꺾쇠 괄호를 전달

$ret = array(
    "name" => "John Doe", 
    "location" => "Antarctica", 
    "description" => "Height < 200" 
); 

내가 통해 AJAX 통해이를 반환 :

echo json_encode($ret); 

는 AJAX 오류 이벤트가 발생하고, 리턴 된 데이터의 검사시 (jqXHR .responseText). Chrome 콘솔을 통해 알 수 있습니다.

"description" : "Height \x3c 200" 

구문 분석 오류가 발생합니다.

그 \ x3c는 "<"의 16 진수 표현이며 그 양식은 JSON을 유효하지 않게 렌더링합니다. 유효한 양식으로 JSON을 통해 각진 대괄호를 전달할 수있는 방법을 찾지 못하는 것 같습니다. PHP 측에서 "\ x3c"의 직접 문자열 바꾸기가 작동하지 않습니다.

또한 AJAX 리턴을 HTML로 지정하면 작동하지만 데이터 세트를 전달하므로 JSON을 사용합니다.

답변

1
기본 크롬 JSON 개체 (window.JSON), 난 당신의 PHP 프로그램에서 문제를 출력을 구문 분석하지 수 있어요 사용

,

"description" : "Height \x3c 200" 

과에 그 직렬화 할 수 있어요 자바 스크립트 JSON 개체. 네이티브 JSON 객체를 지원하지 않는 브라우저와의 호환성을 필요로하는 경우

var jsonString = JSON.stringify({"description": "Height \x3c 200"}); 
//jsonString has the value "{"description":"Height < 200"}" 

var jsonObject = JSON.parse(jsonString); 
//jsonObject has an object that looks like this 
//Object 
//description: "Height < 200" 
//__proto__: Object 

, 내가 같은 JQuery와 같은 라이브러리를 사용하는 것이 좋습니다.

PHP의 json_encode() 함수는 구성 객체를 전달하여 JSON 인코딩 방식을 정확하게 사용자 정의 할 수 있습니다. '\ x3c'가 마음에 들지 않으면 javascript 파서가 같은 '≶':

http://php.net/manual/en/function.json-encode.php

+1

나는 내가 (JSON.stringify 같은 방법을 통해 AJAX-반환 된 데이터를 조작 할 수있는 기회가없는 타사 JS 제어를 사용하고 있습니다) 더 좋아. 그러나 json_encode() 수정자는 매력처럼 작동합니다. :) – kaspnord

관련 문제