Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用$\u POST解码php中隐藏字段中存储的javascript json?_Javascript_Php_Jquery_Json - Fatal编程技术网

如何使用$\u POST解码php中隐藏字段中存储的javascript json?

如何使用$\u POST解码php中隐藏字段中存储的javascript json?,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我在一个隐藏字段中存储了json值,我想在$\u帖子中用php解码json。该值存储在名为alldata的隐藏字段中,我正在$\u POST['alldata']中检索,并在这个$\u POST['alldata']变量上尝试名为json\u decode的php函数。请告诉我如何在php中解码json。请帮帮我。提前谢谢 HTML <input type="hidden" name="alldata" id="alldata" value="{"email2":"nitinjohnson

我在一个隐藏字段中存储了json值,我想在$\u帖子中用php解码json。该值存储在名为alldata的隐藏字段中,我正在$\u POST['alldata']中检索,并在这个$\u POST['alldata']变量上尝试名为json\u decode的php函数。请告诉我如何在php中解码json。请帮帮我。提前谢谢

HTML

<input type="hidden" name="alldata" id="alldata" value="{"email2":"nitinjohnson316@gmail.com","class_rate":"10.000","admin_rate":"20.000","late_charge":"10.000","final_data":[{"pre_assignment_id":"4","user_id":"2","session_id":"52","school":"Admin","day_of_week":"","start_date":"1970-01-01","end_date":"1970-01-01","expense_allowance_value":"0","hours_allowed":"5","event_id":"999999","event_title":"Admin","event_description":null,"event_category":"Admin","event_status":"Active","event_status_num":"5","event_timecard":"A","session_dayofweek":"","session_start_date":"0000-00-00","session_end_date":"0000-00-00","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"3","user_id":"2","session_id":"16","school":"Bethany Elementary","day_of_week":"Wed","start_date":"2015-09-09","end_date":"2015-12-12","expense_allowance_value":"5","hours_allowed":"0","event_id":"3481","event_title":"Fall 2015 - Bethany Elementary Chess Program - Plano ISD","event_description":null,"event_category":"Bethany Elementary","event_status":"Ongoing","event_status_num":"3","event_timecard":"C","session_dayofweek":"Wed","session_start_date":"2015-09-09","session_end_date":"2015-12-09","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"2","user_id":"2","session_id":"15","school":"Ashley Elementary","day_of_week":"Mon","start_date":"2015-09-14","end_date":"2015-12-12","expense_allowance_value":"15","hours_allowed":"0","event_id":"3511","event_title":"Fall 2015 - Ashley Elementary Chess Program - Frisco ISD","event_description":null,"event_category":"Ashley Elementary","event_status":"Ongoing","event_status_num":"3","event_timecard":"C","session_dayofweek":"Mon","session_start_date":"2015-09-14","session_end_date":"2015-12-07","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"1","user_id":"2","session_id":"14","school":"Anderson Elementary","day_of_week":"Mon","start_date":"2015-09-21","end_date":"2015-12-12","expense_allowance_value":"5","hours_allowed":"0","event_id":"3613","event_title":"Fall 2015 - Anderson Elementary Chess Program - Frisco ISD","event_description":null,"event_category":"Anderson Elementary","event_status":"Active Hidden","event_status_num":"2","event_timecard":"C","session_dayofweek":"Mon","session_start_date":"2015-09-21","session_end_date":"2015-12-07","refresh_tmstp":"2015-10-10 18:02:35"}]}">

创建JSON的PHP函数

<?php
add_action('wp_ajax_timecardapp_manage_timecard_stepone','timecardapp_manage_timecard_stepone');
add_action('wp_ajax_nopriv_timecardapp_manage_timecard_stepone','timecardapp_manage_timecard_stepone');

function timecardapp_manage_timecard_stepone(){
    global $wpdb;
    $wpdb->sessions = $wpdb->prefix . 'tc_sessions';    
    $wpdb->contractor = $wpdb->prefix . 'tc_contractor';
    $get_results=$wpdb->get_results("SELECT * FROM $wpdb->contractor WHERE user_id='".$_POST['user_id']."' ");
    $result;
    foreach($get_results as $row){
        $result['email2'] = $row->email2;
        $result['class_rate'] = $row->class_rate;
        $result['admin_rate'] = $row->admin_rate;
        $result['late_charge'] = $row->late_charge;
    }

    $wpdb->pre_assignments = $wpdb->prefix . 'tc_pre_assignments';
    $session_ids;
    $get_pre_assignments=$wpdb->get_results("SELECT * FROM $wpdb->pre_assignments WHERE user_id='".$_POST['user_id']."' ORDER BY start_date, FIELD(start_date,'Sun','Mon','Tue','Wed','Thu','Fri','Sat') ");
    foreach($get_pre_assignments as $row){
        $session_ids[] = $row->session_id;
    }

    $final_session_ids=implode(",",$session_ids);
    $get_pre_assignments=$wpdb->get_results("SELECT * FROM $wpdb->pre_assignments join $wpdb->sessions ON $wpdb->pre_assignments.session_id=$wpdb->sessions.session_id WHERE $wpdb->sessions.session_id IN(".$final_session_ids.") and user_id='".$_POST['user_id']."' ORDER BY start_date, FIELD(start_date,'Sun','Mon','Tue','Wed','Thu','Fri','Sat') ");

    $final_data;
    foreach($get_pre_assignments as $row){
        $final_data[] = $row;
    }
    $result['final_data']=$final_data;
    $session_names=get_session_detail_by_id($final_session_ids);

    echo json_encode($result);
    die();
}
?>

问题在于你的报价。JSON中的双引号与用于分隔值的双引号匹配,因此值在第一个
{
后结束。请将分隔符引号更改为单引号

<input type="hidden" name="alldata" id="alldata" value='{"email2":"nitinjohnson316@gmail.com","class_rate":"10.000","admin_rate":"20.000","late_charge":"10.000","final_data":[{"pre_assignment_id":"4","user_id":"2","session_id":"52","school":"Admin","day_of_week":"","start_date":"1970-01-01","end_date":"1970-01-01","expense_allowance_value":"0","hours_allowed":"5","event_id":"999999","event_title":"Admin","event_description":null,"event_category":"Admin","event_status":"Active","event_status_num":"5","event_timecard":"A","session_dayofweek":"","session_start_date":"0000-00-00","session_end_date":"0000-00-00","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"3","user_id":"2","session_id":"16","school":"Bethany Elementary","day_of_week":"Wed","start_date":"2015-09-09","end_date":"2015-12-12","expense_allowance_value":"5","hours_allowed":"0","event_id":"3481","event_title":"Fall 2015 - Bethany Elementary Chess Program - Plano ISD","event_description":null,"event_category":"Bethany Elementary","event_status":"Ongoing","event_status_num":"3","event_timecard":"C","session_dayofweek":"Wed","session_start_date":"2015-09-09","session_end_date":"2015-12-09","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"2","user_id":"2","session_id":"15","school":"Ashley Elementary","day_of_week":"Mon","start_date":"2015-09-14","end_date":"2015-12-12","expense_allowance_value":"15","hours_allowed":"0","event_id":"3511","event_title":"Fall 2015 - Ashley Elementary Chess Program - Frisco ISD","event_description":null,"event_category":"Ashley Elementary","event_status":"Ongoing","event_status_num":"3","event_timecard":"C","session_dayofweek":"Mon","session_start_date":"2015-09-14","session_end_date":"2015-12-07","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"1","user_id":"2","session_id":"14","school":"Anderson Elementary","day_of_week":"Mon","start_date":"2015-09-21","end_date":"2015-12-12","expense_allowance_value":"5","hours_allowed":"0","event_id":"3613","event_title":"Fall 2015 - Anderson Elementary Chess Program - Frisco ISD","event_description":null,"event_category":"Anderson Elementary","event_status":"Active Hidden","event_status_num":"2","event_timecard":"C","session_dayofweek":"Mon","session_start_date":"2015-09-21","session_end_date":"2015-12-07","refresh_tmstp":"2015-10-10 18:02:35"}]}'>

试试这个

$a = $_POST['alldata'];
$arr = json_decode($a);

$email = $arr->email2;
$class_rate = $arr->class_rate;

...
要访问
最终数据

foreach($arr->final_data as $row) {
     echo $row->pre_assignment_id;
     echo $row->user_id;

     ....

}

以同样的方式尝试访问所有必需的变量。

JSON无效。JSON应该是字符串,因此需要对每个双引号属性进行转义。echo将给出错误消息,解码后的JSON将是一个数组。使用
print\r()
@War10ck我刚刚从浏览器复制了json。之所以能够工作,是因为我正在基于Ajax返回的json创建一个HTML表。具体问题是什么?@NiranjanNRaju我想解码json并存储在一个变量中,然后运行一个循环来获取单个值。
print\r()
只需打印值如何更正json格式我已将用于生成json的函数放入,请检查。json格式有什么问题?JSONLint说它是有效的。您不需要
foreach
循环。只需执行
$result['final_data']=$get\u pre\u assignments
。我按照你说的做了,但是
json\u decode
函数仍然没有返回任何东西。你确定查询返回了任何东西吗?这与关于隐藏字段的问题有什么关系?如果你有其他问题,你应该发布另一个问题。
<input type="hidden" name="alldata" id="alldata" value='{"email2":"nitinjohnson316@gmail.com","class_rate":"10.000","admin_rate":"20.000","late_charge":"10.000","final_data":[{"pre_assignment_id":"4","user_id":"2","session_id":"52","school":"Admin","day_of_week":"","start_date":"1970-01-01","end_date":"1970-01-01","expense_allowance_value":"0","hours_allowed":"5","event_id":"999999","event_title":"Admin","event_description":null,"event_category":"Admin","event_status":"Active","event_status_num":"5","event_timecard":"A","session_dayofweek":"","session_start_date":"0000-00-00","session_end_date":"0000-00-00","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"3","user_id":"2","session_id":"16","school":"Bethany Elementary","day_of_week":"Wed","start_date":"2015-09-09","end_date":"2015-12-12","expense_allowance_value":"5","hours_allowed":"0","event_id":"3481","event_title":"Fall 2015 - Bethany Elementary Chess Program - Plano ISD","event_description":null,"event_category":"Bethany Elementary","event_status":"Ongoing","event_status_num":"3","event_timecard":"C","session_dayofweek":"Wed","session_start_date":"2015-09-09","session_end_date":"2015-12-09","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"2","user_id":"2","session_id":"15","school":"Ashley Elementary","day_of_week":"Mon","start_date":"2015-09-14","end_date":"2015-12-12","expense_allowance_value":"15","hours_allowed":"0","event_id":"3511","event_title":"Fall 2015 - Ashley Elementary Chess Program - Frisco ISD","event_description":null,"event_category":"Ashley Elementary","event_status":"Ongoing","event_status_num":"3","event_timecard":"C","session_dayofweek":"Mon","session_start_date":"2015-09-14","session_end_date":"2015-12-07","refresh_tmstp":"2015-10-10 18:02:35"},{"pre_assignment_id":"1","user_id":"2","session_id":"14","school":"Anderson Elementary","day_of_week":"Mon","start_date":"2015-09-21","end_date":"2015-12-12","expense_allowance_value":"5","hours_allowed":"0","event_id":"3613","event_title":"Fall 2015 - Anderson Elementary Chess Program - Frisco ISD","event_description":null,"event_category":"Anderson Elementary","event_status":"Active Hidden","event_status_num":"2","event_timecard":"C","session_dayofweek":"Mon","session_start_date":"2015-09-21","session_end_date":"2015-12-07","refresh_tmstp":"2015-10-10 18:02:35"}]}'>
$a = $_POST['alldata'];
$arr = json_decode($a);

$email = $arr->email2;
$class_rate = $arr->class_rate;

...
foreach($arr->final_data as $row) {
     echo $row->pre_assignment_id;
     echo $row->user_id;

     ....

}