2013-08-11 4 views
0

J'essaye de porter une application écrite dans node.js à php pour un client et j'ai besoin de savoir s'il y a un moyen de passer des objets de php à javascript comme ceci:Y at-il un moyen de passer des objets de php à javascript comme node.js fait

<script> 
    var a = <%- instance %>; 
    a.someMethod(); 
</script> 
+0

Non Je ne pense pas que vous le pouvez. – putvande

+0

Qu'est-ce que vous essayez d'entrer dans la var? –

+0

Demandez-vous principalement comment vider un objet PHP en tant que données JSON afin de pouvoir l'utiliser en javascript côté client? – chesles

Répondre

1

Votre meilleur pari est d'encoder vos données au format JSON t.

vos données

$data = array(
    "foo" => "bar", 
    "hello" => "world" 
); 

votre script

<script> 
    var data = JSON.parse(<?php echo json_encode($data) ?>); 
</script> 

  • PHP json_encode(value[, options])
    cette fonction a plusieurs options; lire la suite dans la documentation pour dicter un comportement de codage spécifique
    • JSON_HEX_QUOT
    • JSON_HEX_TAG
    • JSON_HEX_AMP
    • JSON_HEX_APOS
    • JSON_NUMERIC_CHECK
    • JSON_PRETTY_PRINT
    • JSON_UNESCAPED_SLASHES
    • JSON_FORCE_OBJECT
    • JSON_UNESCAPED_UNICODE

  • JavaScript JSON.parse(text[, reviver])
    cette fonction prend un reviver et prescrit comment la valeur initialement produite par l'analyse syntaxique est transformé, avant d'être renvoyé.

Une alternative (à la méthode ci-dessus) serait de fournir une API JSON asynchrone

Votre JavaScript pourrait faire un appel

// using (e.g.,) jquery 
var loadPeople = function(data) { 
    console.log(data); 
}; 

$.getJSON('/api/people.json').done(loadPeople); 

Votre serveur PHP devrait répondre sur cette route

// response to /api/people.json 
header("Content-type: application/json"); 
var $data = array(
    "foo" => "bar", 
    "hello" => "world" 
); 
echo json_encode($data); 
exit; 

JavaScript co sortie nsole

{foo: "bar", hello: "world"} 
+0

Puis-je utiliser des méthodes de l'objet en l'encodant dans un format json? – user2325753

+0

Si vous avez besoin d'appeler des méthodes sur l'objet en JavaScript, vous cherchez un "Remote Procedure" Appelez "(ou RPC). Si vous n'êtes pas familier avec ces concepts, il y a une petite courbe d'apprentissage, mais vous pouvez commencer avec PHP [xmlrpc] (http://php.net/manual/fr/book.xmlrpc) .php) – naomik

-2

Vous pouvez simplement faire

<script> 
    var a = <? = $phpvar;?>; 
    a.someMethod(); 
</script> 

EDIT: Passons. J'ai mal lu et pensé que vous vouliez dire 'variable' pas objet.

+0

Cela devrait être '; 'ou mieux encore:' ; 'mais ça ne marcherait toujours pas. – putvande

+0

Vous pouvez supprimer votre réponse si vous n'êtes pas satisfait/ne pensez pas que c'est constructif, etc. – UIlrvnd

+0

Je suis nouveau ici. Comment exactement le supprimer? Je vois juste partager/éditer/drapeau. Merci. – Kai

0

Vous pouvez utiliser json pour transmettre vos données de PHP à JS.

Il pourrait être une chose comme ça:

php

$toJs['myObj'] = $myObj; 
$toJs['whatElse'] = $otherVar; 

dans votre vue

<script>fromPHP = JSON.parse('<?php echo json_encode($toJs) ?>')</script> 

script.js

console.log(fromPHP.myObj); 
+0

Important de noter que cela ne vous permet pas de vous appeler des méthodes PHP sur cet objet - c'est un objet JS après 'JSON.parse', et JS ne connaît pas votre objet PHP ou ses méthodes. – chesles

+0

@chesles tu as raison! Mais s'il veut simplement transmettre des données, cela fonctionne :) – Dragu

Questions connexes