ホームページ > バックエンド開発 > PHPチュートリアル > オブジェクトはシリアル化されてバックグラウンドに渡されるため、PHP はオブジェクトを復元できません。

オブジェクトはシリアル化されてバックグラウンドに渡されるため、PHP はオブジェクトを復元できません。

WBOY
リリース: 2016-06-23 13:49:44
オリジナル
879 人が閲覧しました

フロント ページはオブジェクトをシリアル化してバックエンドに送信します。 json_decode を使用すると、オブジェクトは復元できません。

function build_exitbox (){ // builid 构建编辑用的弹出窗口	var obj1={title:"合同资料",						fields:[							{display:"id",fields_name:"hetong_id",input_type:"text", disabled:true},							{display:"合同字号",fields_name:"hetong_zihao",input_type:"text", disabled:true},							{display:"备案号",fields_name:"beianhao",input_type:"text", disabled:false},							{display:"签约日期",fields_name:"qianyue_date",input_type:"text",class:"Wdate", disabled:false},							{display:"总加工费",fields_name:"t_jiagongfei",input_type:"text", disabled:false},							{display:"总出口值",fields_name:"t_chukou_zhi",input_type:"text", disabled:false},							{display:"总原料值",fields_name:"t_yuanliao",input_type:"text", disabled:false}],		};	var field_json=JSON.stringify(obj1);			open_pop();		$("#light").html(loading_html_str);		$("#light").load("bulid_exitbox.php",{cur_table_name:cur_table_name,cur_act_no:cur_act_type,cur_rec_id:cur_rec_id,field_obj:field_json}, function(){		});}
ログイン後にコピー


バックエンド コード "bulid_exitbox.php"、
<?echo $field_obj;var_dump(json_decode($field_obj,true));?>
ログイン後にコピー


結果は、バックエンドによって受け入れられる文字列です。
{\"title\":\"合同资料\",\"fields\":[{\"display\":\"id\",\"fields_name\":\"hetong_id\",\"input_type\":\"text\",\"disabled\":true},{\"display\":\"合同字号\",\"fields_name\":\"hetong_zihao\",\"input_type\":\"text\",\"disabled\":true},{\"display\":\"备案号\",\"fields_name\":\"beianhao\",\"input_type\":\"text\",\"disabled\":false},{\"display\":\"签约日期\",\"fields_name\":\"qianyue_date\",\"input_type\":\"text\",\"class\":\"Wdate\",\"disabled\":false},{\"display\":\"总加工费\",\"fields_name\":\"t_jiagongfei\",\"input_type\":\"text\",\"disabled\":false},{\"display\":\"总出口值\",\"fields_name\":\"t_chukou_zhi\",\"input_type\":\"text\",\"disabled\":false},{\"display\":\"总原料值\",\"fields_name\":\"t_yuanliao\",\"input_type\":\"text\",\"disabled\":false}]}
ログイン後にコピー


var_dump(json_decode( $field_obj)) 出力はnullです


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

テスト後、フロントデスクによって生成されたfield_jsonの値は次のようになります

{ "title":"契約情報","fields": [{"display":"id","fields_name":"hetong_id","input_type":"text","disabled":true},{"display" :"契約フォント サイズ","fields_name":"hetong_zihao" ,"input_type":"text","disabled":true},{"display":"登録番号","fields_name":"beianhao","input_type ":"text","disabled":false},{ "display":"署名日付","fields_name":"qianyue_date","input_type":"text","class":"Wdate","disabled" :false},{"display":"合計処理手数料" ,"fields_name":"t_jiagongfei","input_type":"text","disabled":false},{"display":"輸出総額"," field_name":"t_chukou_zhi","input_type":"text" ,"disabled":false},{"display":"原材料合計値","fields_name":"t_yuanliao","input_type":"text", "disabled":false}]}

バックグラウンドで取得した値はこんな感じ
{"title":"契約情報","fields":[{"display":"id","fields_name":"hetong_id) ","input_type":"text","disabled":true}, {"display":"契約サイズ","fields_name":"hetong_zihao","input_type":"text","disabled":true}, {"display":"登録番号","fields_name":"beianhao" ,"input_type":"text","disabled":false},{"display":"署名日","fields_name":"qianyue_date" ,"input_type":"text","class":"Wdate", "disabled":false},{"display":"合計処理料金","fields_name":"t_jiagongfei","input_type":"text" ,"disabled":false},{"display":"エクスポート値の合計 ","fields_name":"t_chukou_zhi","input_type":"text","disabled":false},{"display":"生の合計値マテリアル値","フィールド名":"t_yuanliao","input_type":"テキスト ","disabled":false}]}

背景に "" が追加されているのはなぜですか
"" がない場合、オブジェクトは復元されました
"" を削除する方法

マジッククオート GPC は PHP 設定で有効になっており、すべての取得と投稿と Cookie は自動的にスラッシュを追加します。出力時にストリップスラッシュを削除する必要があります
ただし、データベースに保存する前にこれを実行しないでください。インジェクションを防ぐためです

データベースに保存する前にファイルを設定し、自動エスケープスイッチをオンにすると、コンテンツに「」がエスケープされ、データベースに入った後に「」が表示されます。
したがって、データを読み取るときは、ストリップスラッシュを逆転送する必要があります

Base64_encode を追加してから、デコードするサーバーに Base64_decode を追加します???。
Magic quotes gpc は構築されておらず、新しいバージョンの php がデフォルトで設定されています。

あなたはトラブルを求めています!
field_json = obj1; だけです
php $_POST は送信されたすべてのデータを自然に保持します

面倒なことを求めています!
field_json = obj1; だけです
php $_POST は送信されたデータをすべて保持します


サーバーセグメントを抽出する方法

戻り値は null です

print_r($_POST);
すべてを見ました

ヒントをありがとう

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