Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[Javascript] Prototype: object serializen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi...

ik heb ik in javascript een "complex" object. Ik zou dit in het Prototype framework willen gebruiken als parameter voor mijn ajax call, zodat ik het object gewoon ook kan gebruiken in php.

Je hebt de functie Object.toQueryString in het framework maar dit doet niet helemaal wat ik wil. Als je bijvoorbeeld als waarde een array hebt dan maakt hij querystringparameters met dezelfde naam (zie param 'fees'). Hierdoor kan ik mijn $_REQUEST niet goed uitlezen.

code:
1
2
Object.toQueryString({ action: 'ship', order_id: 123, fees: ['f1', 'f2'], 'label': 'a demo' })
// -> 'action=ship&order_id=123&fees=f1&fees=f2&label=a%20demo'


Kan ik nog op een andere manier ervoor zorgen dat ik een javascript object ook echt kan gebruiken als object in php na een ajax call?

thx ;)

  • daniëlpunt
  • Registratie: Maart 2004
  • Niet online

daniëlpunt

monkey's gone to heaven

Gokje: deserializen in PHP?

  • Juup
  • Registratie: Februari 2000
  • Niet online
Je zou het in javascript als JSON text kunnen verzenden en in PHP de JSON omzetten naar een PHP object.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-11 16:51

Patriot

Fulltime #whatpulsert

Gewoon de JSON die je hebt doorgeven? Die kun je met json_decode() gewoon als object laden in PHP.

EDIT: Spuit 11 |:(

[ Voor 9% gewijzigd door Patriot op 04-09-2008 12:28 ]


Verwijderd

Topicstarter
Patriot schreef op donderdag 04 september 2008 @ 12:28:
Gewoon de JSON die je hebt doorgeven? Die kun je met json_decode() gewoon als object laden in PHP.

EDIT: Spuit 11 |:(
Aha... great. Ik heb nu enkel nog een probleempje... zo roep ik de ajaxcall aan:

code:
1
2
3
4
5
6
7
8
<script type="text/javascript">
qs = Object.toJSON({ action: 'ship', order_id: 123, fees: ['f1', 'f2'], 'label': 'a demo' });
new Ajax.Request("ajtest.php", { onSuccess: returnF, method: "post", parameters: "prm="+qs });

function returnF(data) {
    alert(data.responseText);
}
</script>


In mn ajtest.php code doe ik hetvolgende:

code:
1
2
3
$json = $_REQUEST["prm"];
$data = json_decode($json,true);
echo print_r($data,true);


Als ik $_REQUEST["prm"] uitlees, dan heeft dit volgende inhoud:
"{\"action\": \"ship\", \"order_id\": 123, \"fees\": [\"f1\", \"f2\"], \"label\": \"a demo\"}"

toch krijg ik niks terug van mijn Ajax call. Vervang ik
code:
1
$json = $_REQUEST["prm"];
door
code:
1
$json = "{\"action\": \"ship\", \"order_id\": 123, \"fees\": [\"f1\", \"f2\"], \"label\": \"a demo\"}";
hardcoded, dan krijg ik wel de gewenste output... Wat kan hier de oorzaak van zijn?

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-11 16:51

Patriot

Fulltime #whatpulsert

Dat het niet werkt komt omdat er slashes in je string staan die PHP niet echt op prijs stelt.
Probeer het zo:

PHP:
1
2
3
$json = $_REQUEST['prm'];
$data  = json_decode(stripslashes($json), true);
echo print_r($data, true);


Je kunt er ook voor kiezen om ergens anders in je script iets te doen tegen magic_quotes (want dat veroorzaakt dit, Google er maar eens naar), om dit probleem te vermijden.

[ Voor 13% gewijzigd door Patriot op 04-09-2008 14:21 ]


Verwijderd

Topicstarter
Patriot schreef op donderdag 04 september 2008 @ 14:20:
Dat het niet werkt komt omdat er slashes in je string staan die PHP niet echt op prijs stelt.
Probeer het zo:

PHP:
1
2
3
$json = $_REQUEST['prm'];
$data  = json_decode(stripslashes($json), true);
echo print_r($data, true);


Je kunt er ook voor kiezen om ergens anders in je script iets te doen tegen magic_quotes (want dat veroorzaakt dit, Google er maar eens naar), om dit probleem te vermijden.
thx!
Pagina: 1