我想用PHP生成一个JSON数组,但它不能很好地工作。
我的PHP数组看起来像这样:
protected $resultArray = array("1.0" => 0, "1.3" => 0);
然后我这样做:
return json_encode($resultArray);
但是我得到了这个:
var array = [{"1.0":2,"1.3":1}];
为什么"被替换为"
?
quot;
是一个引号字符("
(,编码为HMTL。 json_encode()
不会生成 HTML 编码序列。
在return json_encode($resultArray);
中将return
替换为echo
,您将亲眼看到这一点。
返回的字符串很可能被进一步传递给通过htmlspecialchars()
或htmlentities()
运行它的函数,如果您将其放入 HMTL 上下文中,这是使用它的正确方法。
如果只需要输出 json_encode()
-ed 字符串,请使用不同的查看器类。我不知道 TYPO3,但我想你应该使用 JsonView
;按原样传递$resultArray
,它会为您调用json_encode()
。
我想你可以使用 etend 库,例如在 wamp 服务器中,我测试了这段代码,它工作正常
$str = "<div style='position:relative'><img src='/assets/ui/success.png' /><span
style='position:relative;top:-15px;'>Nachricht empfangen!</span></div>";
echo json_encode(array('prompt' => $str));
//输出
//{"prompt":"<div style='position:relative'><img src=''/assets'/ui'/success.png' '/><span style='position:relative;top:-15px;'>Nachricht empfangen!<'/span><'/div>"}
谢谢大家的帮助!
解决方案是(仅适用于拼写错误 3(。为了在视图中获得正确正确的 JSON-Array,必须通过以下方式改进 JS 代码:
var array = {f:format.htmlentitiesDecode(value:chartarray)};