use*_*021 40 php ajax json escaping
我从服务器收到Ajax请求中的JSON响应.这种方式有效:
{"a":"1","b":"hello'kitty'"}
但我没有成功地在kitty周围加双引号.
当我在Ajax响应中将"转换为\ x22时,它仍被解释为"由JavaScript而我无法解析JSON.
我是否也应该逃避\和unescape以后(这是可能的)?
这该怎么做?
编辑:我不确定我是否表达得很好:我想在解析之后将这个字符串放在"b"中:
凯蒂猫"
如果有必要,我还可以在解析后添加一个额外的步骤来转换"b",但我想这没有必要,有更优雅的方式,所以这会自动发生?
Edit2: ajax页面由php生成.我现在尝试了几件事来创建b的值,所有这些都导致页面上的JSON解析错误:
$b = 'hello "kitty"';
// no 1:
//$b = str_replace('"',"\x22",$b);
// or no 2:
// $b = addslashes($b);
// or no 3:
$b = str_replace('"','\"',$b);
echo '{ "a" : "1", "b" : "' . $b . '"}';
Run Code Online (Sandbox Code Playgroud)
Edit3:这个解决方案最终有效:
$b = 'hello "kitty"';
$b = str_replace('"','\\"',$b);
echo '{ "a" : "1", "b" : "' . $b . '"}';
Run Code Online (Sandbox Code Playgroud)
Max*_*keh 56
用反斜杠逃脱:
> JSON.stringify({"a": 5, "b": 'a "kitty" mighty odd'})
{"a":5,"b":"a \"kitty\" mighty odd"}
> JSON.parse('{"a":5,"b":"a \\"kitty\\" mighty odd"}')
Object
a: 5
b: a "kitty" mighty odd
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
JSON解析器将\"双引号字符串识别为双引号.请注意,在第二个示例中,需要双反斜杠,因为有一个Javascript解析器传递,然后另一个JSON解析器传递.
| 归档时间: |
|
| 查看次数: |
95032 次 |
| 最近记录: |