Heim >Backend-Entwicklung >PHP-Tutorial >使用eval返回后总取不到值,请教为什么

使用eval返回后总取不到值,请教为什么

WBOY
WBOYOriginal
2016-06-13 12:25:36994Durchsuche

使用eval返回后总取不到值,请问为什么
    <script><br /> $(document).ready(function(){<br /> $('.submit').click(function(){<br /> var name=$('.content').val();<br /> $.post("{:U('index.php/Index/Index/ajax')}",{content:name},function(msg){<br /> var dat=eval("(" + msg + ")");//使用这句后,下面就执行不行了,请问为什么呢<br /> $(".show").empty();<br /> $.each(dat,function(neirongIndex,datt){<br /> var html = "<div class='neirong'><span>"+datt['timee']+" ";<br /> html += datt['sender'];<br /> html += ":<br/>"+datt['content'];<br /> html += ""; <br /> $('.show').append(html); <br /> });<br /> $("textarea").val('');<br /> });<br /> });});<br /></script>
-------------------------------------------------
public function ajax(){
// var_dump($_POST);die;
$data=array();
$Model = new Model();
$data['content']=$_POST['content'];
$data['time']=time();
$data['timee']=date('Y-m-d H:i:s',time());
$data['sender']="aaa";
$dd=M(msg)->data($data)->add();
if($dd){
$dataa=M('msg')->order('id desc')->limit('5')->select();//这里是可以取出5条数据记录的
$this->ajaxReturn($dataa);
}
}

var dat=eval("(" + msg + ")");//使用这句后,下面就执行不行了,请问为什么呢?我是用thinkphp3.1.2做的
------解决思路----------------------
请确认  msg 是 json 格式数据
------解决思路----------------------
public function ajax(){
// var_dump($_POST);die;
$data=array();
$Model = new Model();
$data['content']=$_POST['content'];
$data['time']=time();
$data['timee']=date('Y-m-d H:i:s',time());
$data['sender']="aaa";
$dd=M(msg)->data($data)->add();
if($dd){
$dataa=M('msg')->order('id desc')->limit('5')->select();//这里是可以取出5条数据记录的
$this->ajaxReturn($dataa);
///$dataa的类型以已经是数组了。你前端可以直接使用了,alert(msg.你的数据key值),不用再EVAL。

//或者把数组转化为json字符串
$this->ajaxReturn(json_encode($dataa));//这样reurn的就是一个json字符串,你前端要EVAL或者其他解析json的方法解析。
}
}
------解决思路----------------------
如果 alert(msg)
弹出来显示[object Object],[object Object],[object Object],[object Object],[object Object]
就表示 msg 已是解析后的 js 数组了。显然你没有提供真实的代码,因为如果没有 json 参数,$.post 是不会自行解析的

由于 msg 已经解析,再
var dat=eval("(" + msg + ")"); 
就是错误的了

------解决思路----------------------
你返回的数据已经是json,不需要再eval。

var dat=eval("(" + msg + ")");
改为
var dat=msg; 
就可以了。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn