eval を使用して返すと値が取得できません。なぜですか?
------ ----- -----------------------------
パブリック関数 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 の型はすでに配列です。フロントエンドは、EVAL を使用せずに、alert(msg.your data key value) を直接使用できます。
//または配列を json 文字列に変換します
$this->ajaxReturn(json_encode($dataa));// このようにして、戻り値は json 文字列になり、フロントエンドがjson を解析するには EVAL またはその他のメソッド解析が必要です。
}
}
-----ソリューションのアイデア----------------------
alert(msg)
がポップアップし、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]
と表示される場合、msg はすでに解析された js 配列であることを意味します。明らかに実際のコードを提供していません。json パラメータがない場合、$.post はそれ自体で解析されません
msg はすでに解析されているため、
var dat=eval("(" msg ")" );
それは間違っています
-----解決策のアイデア----------------------
返されるデータはすでに json であるため、評価する必要はありません。
var dat=eval("(" msg ")");
は
var dat=msg; に変更できます。