我有一个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文件发布的撇号和引号。
你怎么看?有谁知道这种问题的解决方案?提前致谢!
答案 0 :(得分:2)
为了详细说明我上面的评论,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库,您可以将其放入相同的功能,包括来自PEAR的Services_JSON。
如果您支持没有内置JSON
的浏览器,请直接放入json2.js。
答案 1 :(得分:0)
我发现我的一个php没有正确发送JSON字符串!它现在以两种方式工作 - eval和json2.js非常感谢您的帮助! :)