J'ai un fichier avec l'extension php. Ici, j'ai lu des informations de la base de données. Et je dois transmettre ces données (tableau associé) à js, qui incluent également dans ce fichier php.

<?php
    require('../db.php');

    function var_dump1($arr) {
        echo '<pre>';
        var_dump($arr);
        echo '</pre>';
    }

    // load data from Database
    $query = R::getAll("SELECT * from questions");
    var_dump1($query);

?>

<script>
const arr = JSON.parse( '<?php echo json_encode($query); ?>' );
console.log(arr);

</script>   

Les sorties:

var_dump1 ($ query);

array(5) {
  [0]=>
  array(7) {
    ["id"]=>
    string(1) "1"
    ["question"]=>
    string(143) "The ______________ of a table is used to modify the design of a table, like modifying the name of a field or changing the data type of a field."
    ["answer1"]=>
    string(14) "Datasheet View"
    ["answer2"]=>
    string(11) "Desisn View"
    ["answer3"]=>
    string(10) "Table View"
    ["answer4"]=>
    string(11) "Wizard View"
    ["true_answer"]=>
    string(1) "1"
  }
  [1]=>
  array(7) {
    ["id"]=>
    string(1) "2"
    ["question"]=>
    string(83) "You can select multiple fields of a table in design view by using the ________ key."
    ["answer1"]=>
    string(3) "Alt"
    ["answer2"]=>
    string(8) "Spacebar"
    ["answer3"]=>
    string(5) "Shift"
    ["answer4"]=>
    string(4) "Ctrl"
    ["true_answer"]=>
    string(1) "3"
  }
...

console.log (arr);

Uncaught SyntaxError: missing ) after argument list

Conclusion: de la part de php tout va bien. Mais lorsque nous essayons d'analyser ce tableau dans l'objet js dans la partie js - nous voyons une erreur étrange.

Des questions:

  1. Comment charger des données (par exemple, associer un tableau, dans mon cas) de php à js. Lorsque php et js sont dans le même fichier d'extension (php).
    1. Comment charger des données (par exemple, associer un tableau, dans mon cas) de php à js. Lorsque php et js sont dans des fichiers différents. Par exemple, nous avons 1 fichier d'extension php, où nous avons implémenté la logique (avec DB, dans mon cas). Et nous devons importer ces données dans le fichier d'extension js.
0
helsereet 15 avril 2018 à 22:49

3 réponses

Meilleure réponse

1) Tout ce que vous devez faire est le suivant:

<script>
var arr = <?php echo json_encode($query);?>; // <-- no quotes, no parsify
console.log(arr);
</script>

JSON = JavaScript Object Notation ... son déjà dans le format à attribuer à une variable à utiliser en javascript.

Bien que l'assigner à un 'const' ne soit ... probablement pas une bonne idée car c'est un objet, mais c'est juste comment je les lis, et toujours parfaitement ok: Plus d'informations.

2) Si vous appelez un fichier php à partir de js (ala ajax), vous pouvez renvoyer du JSON brut à partir du retour php, et en fonction de la façon dont vous avez effectué votre appel ajax (et avec quelle bibliothèque, comme éventuellement jquery) ... vous peut ou non avoir besoin de faire JSON.parse(returnData). Pas assez d'informations fournies sur la façon dont vous voulez faire cela, pour donner une réponse solide.

1
IncredibleHat 15 avril 2018 à 20:05

Généralement, votre code php sera rendu sur une page html. Dans cette page, vous pouvez structurer les données en fonction de vos besoins. Exemples (dans votre code PHP):

// as a js - variable: 
<script type="text/javascript">
<?php
var questions = <?php echo json_encode($query);
?>
alert(questions); // Output whatever is in the questions-variable
</script>

Les questions seront une variable js globale que vous pouvez atteindre à partir d'un autre fichier js. ou à partir de js incorporé dans un fichier html.

// As data in your html: 
<input type="hidden" id="id_questions" name="questions" 
value="<?php echo htmlspecialchars(json_encode($query)); ?>"
/>
// Then fetch this data using js-code, eg in a different js-file: 
alert(document.getElementById('id_questions').value());

Ceci peut également être atteint soit à partir d'un fichier js externe, soit à partir de js incorporés dans la sortie html de votre code php.

1
jonasfh 20 avril 2018 à 08:04

Vous devez en savoir plus sur JSON. C'est une syntaxe qui peut être analysée avec n'importe quel langage incluant JS.

Faites simplement écho à votre tableau avec PHP dans votre code JavaScript comme ceci:

<script>
var myData = <?php echo json_encode($array);?>;
console.log(myData);
</script>
1
Niv Apo 15 avril 2018 à 20:06