我有一个 php 文件,它使用 xmlhttp 将字符串发送到 js 文件。 js 文件应该将字符串转换为一个对象,并开始在这个对象上做他的事情。
好吧,php 文件正在打印这个字符串:
$obj="{status:'ok',data:'{link:\"".$link."\",c:\"".$c."\",p:\"".$p."\"}'}";
echo $obj;
js 文件应该得到这个:
{status:'ok',data:'{link:"http://test.com/test.html",c:"9",p:"1"}'}
当我尝试将 js 文件上的字符串从字符串转换为对象时,我在 ie8 上遇到语法错误(在 Firefox 和 Chrome 中工作正常)。
这是我在 js 文件中执行此操作的方法:
eval("var response=" + xmlhttp.responseText);
我尝试将字符串手动放置在 js 文件中,并且 eval 工作正常,所以我认为问题出在 php 文件发布的撇号和引号上。
你觉得怎么样?有谁知道此类问题的解决方案吗?
提前致谢!
最佳答案
为了详细说明我上面的评论,PHP 和 JavaScript 都使得编码和解码 JSON 变得非常容易。你的 PHP 看起来像这样,一个干净的嵌套数组,没有丑陋的字符串连接:
<?php
$obj = array(
'status' => 'ok',
'data' => array(
'link' => $link,
'c' => $c,
'p' => $p
)
);
?>
...你的 JavaScript 看起来像这样,没有丑陋的 eval
:
<script>
var response = JSON.parse(xmlhttp.responseText);
</script>
如果您使用的是没有编译 JSON 支持的 PHP 副本,并且无法自行更新它,您可以使用许多用于 PHP 的开源 JSON 库,它们具有相同的功能,包括 Services_JSON来自梨。
如果您无法支持没有内置 JSON
的浏览器,只需输入 json2.js .
关于javascript - 尝试使用 Javascript 将字符串转换为对象,但在 ie8 中出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484364/