0

我一直在为这个发疯:

我有这个代码:

var names = JSON.parse('<?php echo json_encode($names ); ?>');

其中$names包含 utf-8 内容的数组在哪里。

哪个工作正常,但是当包含$names数组时'我开始收到unexpected token/charachter错误。

我尝试了各种不同的东西,例如:

var names = JSON.parse('<?php echo 
json_encode(str_replace("'","\'",$names),JSON_HEX_APOS  | JSON_HEX_QUOT ); ?>');

或者

var names = JSON.parse('<?php
 echo json_encode($names,JSON_HEX_APOS  | JSON_HEX_QUOT ); ?>');

并且没有帮助。我得到Uncaught SyntaxError: Unexpected token错误。

var names = JSON.parse('{"1":{"136":{"0":"135 \u05dc\u05dc\u05d0 
 \u05d4\u05d2\u05d1\u05dc\u05d4"},"75":{"0":"\u05d1\u05d5\u05e0\u05d5\u05e1 75"},"199":
  {"0":"\u05d1\u05d5\u05e0\u05d5\u05e1 199"},"5":{"0":"card bonus 5"},"30":
  {"0":"\u05e1\u05dc\u05e7\u05d5\u05dd \u05d4\u05d5\u05d3\u05e2\u05d5\u05ea"},"40":{"0":"40
  \u05e2\u05e8\u05d1\u05d9\u05ea"}],"37":[{"0":"\u05d6\u05e8\u05d5 
 \u05d0\u05e0\u05d2\u05dc\u05d9\u05ea"}],"38":[{"0":"\u05d6\u05e8\u05d5 
 \u05e8\u05d5\u05e1\u05d9\u05ea"}],"39":
 [{"0":"\u05d6\u05e8\u05d5 \u05d8\u05d0\u05d9"}]}');

这是一个很长的字符串,我只是将其切成两半,因此语法可能看起来不正确,但总体思路。

我怎样才能让它解析数组?

我正在使用 PHP 5.3,所以我无法尝试JSON_UNESCAPED_SLASHES或者JSON_UNESCAPED_UNICODE它是否相关。

4

1 回答 1

3

有效的 JSON 是有效的 JavaScript;你可以简单地写:

var names = <?php echo json_encode($names ); ?>;

至于 UTF-8 字符,这里是一个测试:

<script>
alert(<?php echo json_encode("\xE2\x82\xAC"); ?>); // should alert €
</script>
于 2013-01-21T12:38:38.813 回答