JSON decode-al egy tömb küldése a PHP-nek

JSON decode-al egy tömb küldése a PHP-nek
2013-05-18T08:24:24+02:00
2013-05-18T09:33:46+02:00
2022-11-29T01:45:43+01:00
Fulop
Sziasztok!

Egy tömböt szeretnék elküldeni a PHP-nek, de nem sikerül a PHP oldalon megjeleníteni.Egyelőre egy SESSION-be menteném az egészet, tehát, hogy tesztelni tudjam, de semmi. Nem tom mi a hiba.

Sima POST átjut a PHP oldalra, de a tömb az nem.

Köszönet.

function functionpost () { var array = {"u1":{"user":"John", "age":22, "country":"United States"}}; $.ajax({ type: "POST", url: 'upload3.php', cache: false, dataType: "json", data : {post:array}, success: function(){ console.log("ok") }, }); }

PHP


session_start(); $result_json = $_POST["post"]; $JSONArray = json_decode($result_json, true); $_SESSION["decoded"] = $JSONArray; $cc = $_SESSION["decoded"]; $dd = $cc; $phpArray = json_decode($dd, true); foreach ($phpArray as $key => $value) { echo "<h2>$key</h2>"; foreach ($value as $k => $v) { echo "$k | $v <br />"; } }
Mutasd a teljes hozzászólást!
Nem kell json_decode() - $_POST['post']['u1']-ben már benne vannak az adatok (pl. echo $_POST['post']['u1']['user']) - jquery serialize-álja a küldéskor.
Mutasd a teljes hozzászólást!

  • A forrás szerint dekódolod a posttal érkezett tömböt, majd a dekódolt tömböt még egyszer a kiíratás előtt. Elég lesz egyszer is. :)
    Mutasd a teljes hozzászólást!
  • Nem kell json_decode() - $_POST['post']['u1']-ben már benne vannak az adatok (pl. echo $_POST['post']['u1']['user']) - jquery serialize-álja a küldéskor.
    Mutasd a teljes hozzászólást!
  • Megoldottam, hogy semmi decode. Köszi. Most szépen átmegy a tömbb és szépen megjelenítem.

    De akkor minek van ez a decode? Én azt hittem, hogy ha tömböt küldök akkor kell egy decode, ha pedig a tömböt visszaakarom kapni, akkor meg az encode.

    Az encode az működik. De ez a decode valami régi dolog? Vagy most nem értem.
    Mutasd a teljes hozzászólást!
  • De akkor minek van ez a decode?

    Elolvastad Frostech0 válaszát?

    jquery serialize-álja a küldéskor
    Mutasd a teljes hozzászólást!
  • De akkor minek van ez a decode?


    Arra, hogy ha tényleg json szöveget kapsz - pl. egy API-nál:

    $json = file_get_contents("http://gdata.youtube.com/feeds/api/users/youtube/uploads?alt=json"); $data = json_decode($json);

    vagy mondjuk Google Maps:

    $json = file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?address=Budapest&sensor=false"); $data = json_decode($json);

    A jQuery olyan rendes, hogy a tömböt átalakítja a küldés előtt, így nem neked kell string-é alakítani.

    pl. egy JSON-os AJAX hívás így nézne ki, ha json_decode() van a túl oldalon:

    var array = {"u1":{"user":"John", "age":22, "country":"United States"}}; var params = "post="+encodeURIComponent(JSON.stringify(array)); var xhr = new XMLHttpRequest(); xhr.open('POST', 'test.php', false); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-length", params.length); xhr.setRequestHeader("Connection", "close"); xhr.send(params); ... <?php if(!empty($_POST['post'])) { $data = json_decode($_POST['post'], true); echo $data['u1']['user']; } ?>

    egyébként pedig így kellene kinéznie a params-nak a fenti kódban (ezt csinál a jQuery a data-ból), hogy $_POST['post']['u1']['user']-ként tudd elérni a nevet:

    post%5Bu1%5D%5Buser%5D=John&post%5Bu1%5D%5Bage%5D=22&post%5Bu1%5D%5Bcountry%5D=United+States // vagy olvhatóbbá alakítva: post[u1][user]=John&post[u1][age]=22&post[u1][country]=United+States
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd