javascript - 尝试使用 Javascript 将字符串转换为对象,但在 ie8 中出现语法错误

标签 javascript json object eval

我有一个 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/

相关文章:

json - R解析字符串

json - 如何在 ECMAScript 6 中导入 JSON 文件?

iphone - iPhone 迄今为止最好的 JSON 解析器

C++ 排序坐标存储为 vector 中的对象

c++ - 对象修改是否创建新对象?

objective-c - 按日期属性对自定义类对象数组进行排序

javascript - 获取 javascript 警报窗口中填充的 json 对象数据

javascript - 防止同一请求多次完成

javascript - "smart home"物联网 WebSocket --> 服务器 WebSocket --> 客户端

javascript - 如何在 ASP.NET 中向串行端口或 USB 端口发送和接收数据?