2012-09-19 2 views
3

내 코드 어떻게 JSON에서 PHP 변수를 포함하고 아약스에 전달

var json = xmlhttp.responseText; //ajax response from my php file obj = JSON.parse(json); alert(obj.result); 

그리고 내 PHP 코드에서

$result = 'Hello'; 

echo '{ 
     "result":"$result", 
     "count":3 
     }'; 

문제는 : 나는 obj.result을 경고 할 때, Hello 대신에 "$result"이 표시됩니다. 어떻게 해결할 수 있습니까?

답변

10

귀하의 예제와 기본적인 문제는 $result은 작은 따옴표에 싸여 있다는 점이다. 그래서 첫 번째 솔루션은 예를 들어, 그 랩을 해제하는 것입니다

$result = 'Hello'; 
echo '{ 
    "result":"'.$result.'", 
    "count":3 
}'; 

을하지만 $result 예, {"result":""","count":3}을 위해,의 결과로 " 문자 자체를 포함 할 수 있음을 항상 가능한 한이 여전히 "충분히 좋은"아니다, 아직 유효하지 않은 json입니다. 해결 방법은 $result이 json에 삽입되기 전에 탈출하는 것입니다.

이는 json_encode() 기능을 사용하여 실제로 매우 간단하다 : 더 나은, 우리는 PHP가 json으로 인코딩 자체의 전체를 할 수

$result = 'Hello'; 
echo '{ 
    "result":'.json_encode($result).', 
    "count":3 
}'; 

또는, 전체 배열을 전달하는 대신 단지 $result로 : 전부

$result = 'Hello'; 
echo json_encode(array(
    'result' => $result, 
    'count' => 3 
)); 
2

당신은

사용 보너스로 json_encode()

$arr = array(
    "result" => $result, 
    "count" => 3 
); 
echo json_encode($arr); 

, json_encode 제대로 응답을 인코딩합니다 때문에 어떤 문자열 보간가 발생하지 않습니다, 당신의 에코에 작은 따옴표를 사용하고 있습니다!

+0

나는 이것을 역시 시도했다. echo '{ "결과": ". $ 결과." ", "개수 ": 3 }'; – Nevin

+0

모든 ** UTF-8 ** 문자열. –

+0

네빈,'json_encode' 사용 –

0

시도 :

$result = 'Hello'; 
echo '{ 
    "result":"'.$result.'", 
    "count":3 
}'; 
4

당신은 제대로 데이터를 인코딩하는 json_encode을 사용해야합니다

$data = array(
    "result" => $result, 
    "count" => 3 
); 
echo json_encode($data); 
0
$result = 'Hello'; 

$json_array=array(
    "result"=>$result, 
    "count"=>3 
) 
echo json_encode($json_array); 

.

관련 문제