简体   繁体   中英

How to decode javascript json stored in a hidden field in php using $_POST?

I have json values stored in a hidden field and i want to decode the json in php in the $_POST. The value is stored in the hidden field named alldata and i am retrieving in the $_POST['alldata'] and i am trying the php function named json_decode on this $_POST['alldata'] variable. Please tell me how can i decode the json in php. Please help me. Thanks in advance.

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"}]}">

Javascript

jQuery("#txtweek").change(function(){
        if(jQuery("select[name='txtuser'] option:selected").text()=='--select--'){          
            alert("Please select a user first to proceed");
            return false;
        } else {
            jQuery.ajax({
                url:ajaxurl,
                type:'post',
                data:{action:'timecardapp_manage_timecard_stepone',user_id: jQuery("#txtuser").val()},
                success: function(response){                            
                    var data=JSON.parse(response);
                    // i am adding json value to hidden field from here
                    jQuery("#alldata").val(JSON.stringify(data));                   
                    var currentweek = jQuery("#txtweek option:selected").text();
                    var days_date = new Array();
                    function pad(str) {
                      return ("0"+str).slice(-2);
                    }
                    function getNextDay(str) { 
                      var parts = str.split("-");
                      var mon_day = new Date(parts[2], parts[0] - 1, parseInt(parts[1], 10) + 0, 12, 0, 0, 0);
                      var tue_day = new Date(parts[2], parts[0] - 1, parseInt(parts[1], 10) + 1, 12, 0, 0, 0);
                      var wed_day = new Date(parts[2], parts[0] - 1, parseInt(parts[1], 10) + 2, 12, 0, 0, 0);
                      var thu_day = new Date(parts[2], parts[0] - 1, parseInt(parts[1], 10) + 3, 12, 0, 0, 0);
                      var fri_day = new Date(parts[2], parts[0] - 1, parseInt(parts[1], 10) + 4, 12, 0, 0, 0);
                      days_date[0] = ""+pad(mon_day.getMonth()+1)+"-"+ pad(mon_day.getDate())+"-"+mon_day.getFullYear();
                      days_date[1] = ""+pad(tue_day.getMonth()+1)+"-"+ pad(tue_day.getDate())+"-"+tue_day.getFullYear();
                      days_date[2] = ""+pad(wed_day.getMonth()+1)+"-"+ pad(wed_day.getDate())+"-"+wed_day.getFullYear();
                      days_date[3] = ""+pad(thu_day.getMonth()+1)+"-"+ pad(thu_day.getDate())+"-"+thu_day.getFullYear();
                      days_date[4] = ""+pad(fri_day.getMonth()+1)+"-"+ pad(fri_day.getDate())+"-"+fri_day.getFullYear();

                    }

                    var currentweek = jQuery("#txtweek option:selected").text(), // no values available
                    next_day = new Date(); // or some other default

                    if (currentweek && currentweek.indexOf("--") == -1) { // not the first
                      next_day=getNextDay(currentweek);
                    }

                    var trHTML = '';
                    var number_of_classes = 0;
                    var totalexpense = 0;
                    var totaladminhours = 0;

                    jQuery.each(data.final_data, function (i, item) {
                        if(item.event_title == 'Admin'){
                            //Monday
                            trHTML += '<tr>';
                            trHTML += '<td>'+item.event_title+'</td>';
                            trHTML += '<td>Mon</td>';
                            trHTML += '<td>'+days_date[0]+'</td>';
                            trHTML += '<td>Y</td>';
                            trHTML += '<td>'+item.start_date+'</td>';
                            trHTML += '<td>'+item.end_date+'</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>'+item.expense_allowance_value+'</td>';
                            trHTML += '<td>'+item.hours_allowed+'</td>';
                            trHTML += '</tr>';

                            //Tuesday
                            trHTML += '<tr>';
                            trHTML += '<td>'+item.event_title+'</td>';
                            trHTML += '<td>Tue</td>';
                            trHTML += '<td>'+days_date[1]+'</td>';
                            trHTML += '<td>Y</td>';
                            trHTML += '<td>'+item.start_date+'</td>';
                            trHTML += '<td>'+item.end_date+'</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>'+item.expense_allowance_value+'</td>';
                            trHTML += '<td>'+item.hours_allowed+'</td>';
                            trHTML += '</tr>';

                            //Wednesday
                            trHTML += '<tr>';
                            trHTML += '<td>'+item.event_title+'</td>';
                            trHTML += '<td>Wed</td>';
                            trHTML += '<td>'+days_date[2]+'</td>';
                            trHTML += '<td>Y</td>';
                            trHTML += '<td>'+item.start_date+'</td>';
                            trHTML += '<td>'+item.end_date+'</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>'+item.expense_allowance_value+'</td>';
                            trHTML += '<td>'+item.hours_allowed+'</td>';
                            trHTML += '</tr>';

                            //Thursday
                            trHTML += '<tr>';
                            trHTML += '<td>'+item.event_title+'</td>';
                            trHTML += '<td>Thu</td>';
                            trHTML += '<td>'+days_date[3]+'</td>';
                            trHTML += '<td>Y</td>';
                            trHTML += '<td>'+item.start_date+'</td>';
                            trHTML += '<td>'+item.end_date+'</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>'+item.expense_allowance_value+'</td>';
                            trHTML += '<td>'+item.hours_allowed+'</td>';
                            trHTML += '</tr>';

                            //Friday
                            trHTML += '<tr>';
                            trHTML += '<td>'+item.event_title+'</td>';
                            trHTML += '<td>Fri</td>';
                            trHTML += '<td>'+days_date[4]+'</td>';
                            trHTML += '<td>Y</td>';
                            trHTML += '<td>'+item.start_date+'</td>';
                            trHTML += '<td>'+item.end_date+'</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>&nbsp;</td>';
                            trHTML += '<td>'+item.expense_allowance_value+'</td>';
                            trHTML += '<td>'+item.hours_allowed+'</td>';
                            trHTML += '</tr>';

                        } else {
                            trHTML += '<tr>';
                            trHTML += '<td>'+item.event_title+'</td>';
                            trHTML += '<td>'+item.day_of_week+'</td>';
                            if(item.day_of_week=='Mon'){
                                trHTML += '<td>'+days_date[0]+'</td>';
                            }
                            if(item.day_of_week=='Tue'){
                                trHTML += '<td>'+days_date[1]+'</td>';
                            }
                            if(item.day_of_week=='Wed'){
                                trHTML += '<td>'+days_date[2]+'</td>';
                            }
                            if(item.day_of_week=='Thu'){
                                trHTML += '<td>'+days_date[3]+'</td>';
                            }
                            if(item.day_of_week=='Fri'){
                                trHTML += '<td>'+days_date[4]+'</td>';
                            }
                            trHTML += '<td>Y</td>';
                            trHTML += '<td>'+item.start_date+'</td>';
                            trHTML += '<td>'+item.end_date+'</td>';
                            trHTML += '<td><input type="checkbox" name="presentdays[]" /></td>';
                            trHTML += '<td><input type="checkbox" name="latedays[]" /></td>';
                            trHTML += '<td>'+item.expense_allowance_value+'</td>';
                            trHTML += '<td>'+item.hours_allowed+'</td>';
                            trHTML += '</tr>';

                            number_of_classes++;
                            totalexpense = +totalexpense + +item.expense_allowance_value;
                            totaladminhours = totaladminhours + item.hours_allowed;
                        }

                    });

                    jQuery('#steptwotable').find('tbody').empty();
                    jQuery('#steptwotable').find('tbody').append(trHTML);

                    var totalclasses = number_of_classes * jQuery("input[name='txtclassrate']").val();
                    var totaladminrate = totaladminhours * jQuery("input[name='txtadminrate']").val();
                    var trHTML2 = '';
                    trHTML2 += '<tr>';
                    trHTML2 += '<td>'+number_of_classes+'</td>';
                    trHTML2 += '<td><input type="text" value="'+totalclasses+'" readonly /></td>';
                    trHTML2 += '<td><input type="text" value="" readonly /></td>';
                    trHTML2 += '<td><input type="text" value="'+totalexpense+'" readonly /></td>';
                    trHTML2 += '<td><input type="text" value="'+totaladminrate+'" readonly /></td>';
                    trHTML2 += '</tr>';
                    jQuery('#stepthreetable').find('tbody').empty();
                    jQuery('#stepthreetable').find('tbody').append(trHTML2);

                }
            });
        }
    });

PHP

<?php
if($_POST['addtimecard']){
        // print_r($_POST);
        echo json_decode($_POST['alldata']);
    }
?>

PHP print_r output

Array ( [txtuser] => 2 [txtemail2] => nitinjohnson316@gmail.com [txtclassrate] => 10.000 [txtadminrate] => 20.000 [txtweek] => 08-31-2015 [txtcomment] => [alldata] => {\"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\"}]} [addtimecard] => Save ) {\"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\"}]}

PHP Function from which i am creating the JSON

<?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();
}
?>

The problem is with your quoting. The double quotes in the JSON are matching the double quotes you used to delimit the value, so the value is ending after the first { . Change the delimiter quotes to single quotes.

<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"}]}'>

Try this,

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

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

...

To access final_data ,

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

     ....

}

In the same way try to access all required variables.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM