ホームページ > バックエンド開発 > PHPチュートリアル > eval を使用して返すと値が取得できません。なぜですか?

eval を使用して返すと値が取得できません。なぜですか?

WBOY
リリース: 2016-06-23 13:25:14
オリジナル
950 人が閲覧しました

---------------------------------------------------- -
パブリック関数ajax(){
// var_dump($_POST );die
$data=array();
$data['content']=$_POST['content '];
$data['time']=time() ;
$data['timee']=date('Y-m-d H:i:s',time()); "aaa";
$dd=M(msg)->data($data)->add();
$dataa=M('msg')->order(' id desc')->limit('5')-> ;select();//ここで 5 つのデータ レコードを取得できます
$this->ajaxReturn($dataa);
}
}

var dat= eval("(" + msg + ")"); //この文を使用すると、以下が実行できなくなります。 thinkphp3.1.2でやってみました





ディスカッションに返信(解決策)

msgがjson形式のデータであることを確認してください

alert(msg) take a look

alert(msg) take a look

pop up [object Object],[object Object],[object Object],[object Object],[object Object] を表示するには

public function ajax(){

// var_dump($_POST);die; $data=array();

$Model = 新しいモデル();

$data['time']=time(); '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(); //ここでは
$this->ajaxReturn($dataa);
/// $dataa の型は 5 つのデータ レコードから取得できます。これはすでに配列です。フロントエンドは、EVAL を使用せずに、alert(msg.your data key value) を直接使用できます。

//または配列を json 文字列に変換します
$this->ajaxReturn(json_encode($dataa));//この方法では、reurn は json 文字列であり、フロントエンドはそれを EVAL で解析する必要がありますまたは他の JSON 解析方法。
}
}

thinkphp の json 変換を使用している場合、jquery で投稿するときに、返される json パラメーターのタイプを指定します

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; に変更します。

返される形式が json であることを宣言するには、関数の後に「json」を追加する必要があります

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート