5

マイコード

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とおり"$result"ですHello。どうすればこれを解決できますか?

4

5 に答える 5

16

あなたの例の基本的な問題は$result、単一引用符で囲まれていることです。したがって、最初の解決策はラップを解除することです。たとえば、次のようになります。

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

$resultただし、文字自体を含む可能性が常にあるため、これはまだ「十分」ではありません。"たとえば、{"result":""","count":3}これはまだ無効な json です。$result解決策は、json に挿入される前にエスケープすることです。

これは実際には非常に簡単で、次のjson_encode()関数を使用します。

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

または、さらに良いことに、PHP に json エンコーディング自体をすべて実行させることもできます$result

$result = 'Hello';
echo json_encode(array(
    'result' => $result,
    'count' => 3
));
于 2012-09-19T04:58:55.623 に答える
6

json_encodeデータを適切にエンコードするには、次を使用する必要があります。

$data = array(
    "result" => $result,
    "count"  => 3
);
echo json_encode($data);
于 2012-09-19T04:58:28.413 に答える
2

エコーで一重引用符を使用しているため、文字列補間は行われていません

json_encode()を使用する

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

おまけとして、json_encode応答を適切にエンコードします!

于 2012-09-19T04:56:03.800 に答える
0

試す:

$result = 'Hello';
echo '{
   "result":"'.$result.'",
   "count":3
}';
于 2012-09-19T04:57:09.773 に答える
0
$result = 'Hello';

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

それで全部です。

于 2012-09-19T05:01:07.510 に答える