简体   繁体   中英

Send data with AJAX and receive in PHP

I'm having a script which is generating a JSON array, based values user have selected. These values are sent as a JSON with AJAX to a PHP script which should receive this values and process it.

What could be wrong?

JSON (That is sent):

[{
  "Pages":
         {"name":" Page Name 1",
          "id":"252456436636644"}
         },
  {
   "Pages":{
          "name":" Page Name 2",
          "id":"345345435435232"
          }
}]

Jquery:

var json_pages = JSON.stringify(publish);

$.ajax({
    url: "post.php",
    type: "post",
    data: { PublishToPages: json_pages },
    success: function(){},
    error: function(){}   
}); 

Problem is that the JSON I recieve from PHP isn't getting the data,

if($_POST['PublishToPages']) {

    $json = $_POST['PublishToPages'];

    $array = json_decode($json, true);

    foreach($array as $item) { 
        $page_id = $item['Pages']['id'];
        echo $page_id;  
    }
}

If I manually put in the JSON in the PHP script like this it Works,

if ($_POST['PublishToPages']) {

    $json = '[{"Pages":{"name":" Page Name","id":"234545355345435"}},{"Pages":{"name":" Page Name 2","id":"345345435435435435"}}]';

    $array = json_decode($json, true);

    foreach($array as $item) { 
    $page_id = $item['Pages']['id'];
        echo $page_id;  
    }
}

Try using this:

if($_POST['PublishToPages']) {

    $json = $_POST['PublishToPages'];
    $items = array();

    $array = json_decode($json, true);

    foreach($array as $item) { 
        $page_id = $item['Pages']['id'];
        $items[] = $page_id;  
    }

    echo json_encode($items);
}

Try this

$.ajax({
    url: "post.php",
    type: "post",
    dataType:"json",
    data: { PublishToPages: json_pages },
    success: function(){},
    error: function(){}   
});  

Thanks for all input! I figured it out using the var_dump and realized it was encoding error so added stripslashes(); and it worked! :)

if ($_POST['PublishToPages']) {

    $json = stripslashes($_POST['PublishToPages']);

    $array = json_decode($json, true);

    foreach($array as $item) { 
        $page_id = $item['Pages']['id'];
        echo $page_id;  
    }
}

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