Read associative array from json in $_POST

前端 未结 6 932
后悔当初
后悔当初 2020-12-05 03:27

I am using jQuery to post a json object to my php application.

jQuery.post(\"save.php\",JSON.stringify(dataToSend), function(data){ alert(data); });
         


        
相关标签:
6条回答
  • 2020-12-05 03:31

    Try:

    echo $value->page;
    

    since json_decode's default behaviour is to return an object of type stdClass.

    Alternatively, set the second optional $assoc argument to true:

    $value = json_decode(stripslashes($_POST), true);
    echo $value['page'];
    
    0 讨论(0)
  • 2020-12-05 03:34

    You can avoid to use JSON.stringify and json_decode:

    jQuery.post("save.php", dataToSend, function(data){ alert(data); });
    

    And:

    <?php
    echo $_POST['page'];
    ?>
    

    Update:

    ... but if your really want to use them, then:

    jQuery.post("save.php",  {json: JSON.stringify(dataToSend)}, function(data){ alert(data); });
    

    And:

    <?php
    $value = json_decode($_POST['json']);
    echo $value->page;
    ?>
    
    0 讨论(0)
  • 2020-12-05 03:42

    If you want to use json data as an associative array, you can try as following:

    <?php 
    
    $json = 'json_data'; // json data
    
    $obj = jsondecode($json, true); // decode json as associative array 
    
    // now you can use different values as 
    echo $obj['json_string']; // will print page value as 'about_us.php' 
    
    
    for example: 
    
    $json = { "data" : [ { "contents" : "This is some content",
        "selector" : "DIV.subhead"
       },
       { "contents" : "some other content",
        "selector" : "LI:nth-child(1) A"
       }
      ],
    "page" : "about_us.php"
    }
    
    $obj = json_decode($json, true); 
    
    /* now to print contents from data */
    
    echo $obj['data']['contents']; 
     // thats all 
    ?>
    
    0 讨论(0)
  • 2020-12-05 03:50

    It looks like jQuery might encode a javascript object in urlencoded form then would be populated into $_POST. At least from their examples. I'd try passing in your object into post() without stringifying it.

    0 讨论(0)
  • 2020-12-05 03:54

    $_POST will not be populated if the request body is not in the standard urlencoded form.

    Instead, read from the read-only php://input stream like this to get the raw request body:

    $value = json_decode(file_get_contents('php://input'));
    
    0 讨论(0)
  • 2020-12-05 03:56

    Pass the second argument as true if you want the associative array otherwise it will keep returning object.

    $value = json_decode(stripslashes($_POST),true);
    
    0 讨论(0)
提交回复
热议问题