2017-10-15 53 views
-1

即时通讯尝试从我的.php文件使用eval()函数转换json字符串,但它不起作用。浏览器控制台说 SyntaxError:预期的表达式,得到了'<'...eval()函数不工作

但是当我注释掉eval()的行并且使用document.write(data);出现串...

这里是我的代码..

<html> 
<head> 
    <script type='text/javascript' src='jquery.js'></script> 
    <script type='text/javascript'> 

    var go = function() { 

     $.get("testjson.php", function(data) { 

      var obj = eval("(" + data + ")"); 

      document.write(obj.name + "<br />"); 
      document.write(obj.date + "<br />"); 
     }); 
    } 
    </script> 
</head> 
<body> 
    <input type='button' value='go' onclick='go()' /> 
<body> 
</html> 

,这里是我的testjson.php文件的代码...使用

<?php 

    $msg = array(
     "name"=>"hi there Victor!", 
     "date"=>"Monday 21st Feb 2010" 
    ); 

    $myMsg = json_encode($msg); 

    echo $myMsg; 

?> 

IM最新版本的jQuery的..

+0

不要做eval。有很多更好的方法可以像JSON那样获取数据。设置正确的内容类型(或使用'$ .getJSON') – apokryfos

+0

您的脚本有效。你确定你是从web服务器加载而不是'file:///'? –

+0

您是否留下问题或者您是否不知道您可以回复此处的评论? –

回答

0

这里的评论和回答中还有其他建议,关于使用$.getJSON()而不是eval(),或者指定json作为中的参数,这些都是很好的建议。但是,他们不是这不起作用的原因。

简单地说,你在var go = ....函数定义中在底部靠近大括号后缺少一个分号。

+0

randall ..我试了你的代码..但仍然没有工作... @nick我已经把一个分号但没有任何改变.. – Vitas

+0

你确定你正在尝试的代码是你的代码张贴在你的问题?我在编写代码时尝试了代码,添加了分号,并且按照我的预期工作。 –

+0

有或没​​有分号,代码将正常工作,所以它不是他得到关于“<”的错误的原因(听起来像是从他的php输出损坏)。 – IncredibleHat

0

代码现在已修复!大声笑我不知道为什么,但我只是删除了我的.php代码下的注释html代码......它是如何影响我的代码在第一位?这只是一个评论...:/

+0

评论html代码仍然是html代码。假设你正在使用诸如“<! - ... ...这里有很多HTML的HTML注释... - >'。这是因为json进来并且去“这是什么”<'?!“和保释金。如果你有PHP评论背后的HTML,那就是另一回事了。 – IncredibleHat