Можно ли JSON использовать этот php-массив через json_encode? Поскольку этот php-массив называется $data
и когда я делаю ..
var myJson = <?php echo json_encode($data) ?>; console.log(myJson);
в javascript это дает мне ошибки. Мне было интересно, существует ли ограничение на то, какие типы php-массивов JSON могут / не могут сделать.
Array ( [0] => Array ( [0] => Array ( [text] => SimpleXMLElement Object ( [0] => Tanner, C. kickoff 60 yards to the DU5, Butler, L return 14 yards to the DU19 (Johnson, I.). ) [spot] => SimpleXMLElement Object ( [0] => GT35 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => K ) [drive] => 1 ) ) [1] => Array ( [0] => Array ( [text] => SimpleXMLElement Object ( [0] => Renfree, S pass complete to Vernon, C for 6 yards to the DU25 (Thomas, Je.). ) [spot] => SimpleXMLElement Object ( [0] => DU19 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 2 ) [1] => Array ( [text] => SimpleXMLElement Object ( [0] => Renfree, S pass incomplete to Scott, D. ) [spot] => SimpleXMLElement Object ( [0] => DU25 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 4 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 2 ) [2] => Array ( [text] => SimpleXMLElement Object ( [0] => Renfree, S pass complete to Scott, D for 6 yards to the DU31, 1ST DOWN DU (Thomas, Je.). ) [spot] => SimpleXMLElement Object ( [0] => DU25 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 4 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 2 ) [3] => Array ( [text] => SimpleXMLElement Object ( [0] => Renfree, S pass complete to Scott, D for no gain to the DU31 (Sweeting, R.). ) [spot] => SimpleXMLElement Object ( [0] => DU31 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 2 ) [4] => Array ( [text] => SimpleXMLElement Object ( [0] => Renfree, S pass incomplete to Vernon, C. ) [spot] => SimpleXMLElement Object ( [0] => DU31 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 2 ) [5] => Array ( [text] => SimpleXMLElement Object ( [0] => Renfree, S sacked for loss of 4 yards to the DU27 (Gotsis, A.). ) [spot] => SimpleXMLElement Object ( [0] => DU31 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 2 ) [6] => Array ( [text] => SimpleXMLElement Object ( [0] => Monday, W punt 53 yards to the GT20, Golden, J. return 8 yards to the GT28 (Reeves, D). ) [spot] => SimpleXMLElement Object ( [0] => DU27 ) [ball] => SimpleXMLElement Object ( [0] => DU ) [togo] => SimpleXMLElement Object ( [0] => 14 ) [type] => SimpleXMLElement Object ( [0] => U ) [drive] => 2 ) ) [2] => Array ( [0] => Array ( [text] => SimpleXMLElement Object ( [0] => Smith, O. rush for 8 yards to the GT36 (Brown, Ky). ) [spot] => SimpleXMLElement Object ( [0] => GT28 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [1] => Array ( [text] => SimpleXMLElement Object ( [0] => Sims, D. rush for 6 yards to the GT42, 1ST DOWN GT (Sink, N). ) [spot] => SimpleXMLElement Object ( [0] => GT36 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 2 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [2] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. pass incomplete to Smith, O.. ) [spot] => SimpleXMLElement Object ( [0] => GT42 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 3 ) [3] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. rush for 2 yards to the GT44 (Anunike, K). ) [spot] => SimpleXMLElement Object ( [0] => GT42 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [4] => Array ( [text] => SimpleXMLElement Object ( [0] => Greene, J. rush for 6 yards to the 50 yardline (Canty, W). ) [spot] => SimpleXMLElement Object ( [0] => GT44 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 8 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [5] => Array ( [text] => SimpleXMLElement Object ( [0] => Smith, O. rush for 16 yards to the DU34, 1ST DOWN GT (Canty, W;France, C). ) [spot] => SimpleXMLElement Object ( [0] => GT50 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 2 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [6] => Array ( [text] => SimpleXMLElement Object ( [0] => Smith, O. rush for 5 yards to the DU29 (France, C). ) [spot] => SimpleXMLElement Object ( [0] => DU34 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [7] => Array ( [text] => SimpleXMLElement Object ( [0] => Laskey, Z. rush for 3 yards to the DU26 (France, C). ) [spot] => SimpleXMLElement Object ( [0] => DU29 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 5 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [8] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. rush for 3 yards to the DU23, 1ST DOWN GT (France, C). ) [spot] => SimpleXMLElement Object ( [0] => DU26 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 2 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [9] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. pass complete to Smith, O. for 21 yards to the DU2, 1ST DOWN GT (Butler, L). ) [spot] => SimpleXMLElement Object ( [0] => DU23 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 10 ) [type] => SimpleXMLElement Object ( [0] => P ) [drive] => 3 ) [10] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. rush for 1 yard to the DU1 (Brown, Ky;Foxx, J). ) [spot] => SimpleXMLElement Object ( [0] => DU02 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 0 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [11] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. rush for no gain to the DU1 (Cockrell, R). ) [spot] => SimpleXMLElement Object ( [0] => DU01 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 0 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [12] => Array ( [text] => SimpleXMLElement Object ( [0] => Washington, T. rush for 1 yard to the DU0, TOUCHDOWN, clock 06:51. ) [spot] => SimpleXMLElement Object ( [0] => DU01 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 0 ) [type] => SimpleXMLElement Object ( [0] => R ) [drive] => 3 ) [13] => Array ( [text] => SimpleXMLElement Object ( [0] => Tanner, C. kick attempt good. ) [spot] => SimpleXMLElement Object ( [0] => DU03 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 0 ) [type] => SimpleXMLElement Object ( [0] => X ) [drive] => 3 ) [14] => Array ( [text] => SimpleXMLElement Object ( [0] => Tanner, C. kickoff 54 yards to the DU11, Butler, L return 23 yards to the DU34 (Harrell, A.). ) [spot] => SimpleXMLElement Object ( [0] => GT35 ) [ball] => SimpleXMLElement Object ( [0] => GT ) [togo] => SimpleXMLElement Object ( [0] => 0 ) [type] => SimpleXMLElement Object ( [0] => K ) [drive] => 3 ) ) )
Сначала вам нужен PHP-файл на сервере Apache где-нибудь с установленным PHP. Создайте файл следующим образом:
localhost:8888/myfile.php
<?php $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5} ?>
Тогда ваш JavaScript (в этом примере я использую jQuery ):
$.getJSON('http://localhost:8888/myfile.php', function(data) { console.log(data); });
Это должно стать началом для создания массивов PHP для вашего JavaScript.
Поскольку @Allendar сказал, что вы не можете встроить PHP в JS-файл. Однако вы можете добавить функцию в свой JS-файл для загрузки данных JSON, а затем вставить эти данные в тег скрипта в ваш PHP-файл.
example.js:
var loadJsonFromPHP = function(json) { console.log(json); }
example.php:
<?php $data = array("some", "test", "data"); ?> <html> <head> <script src="example.js"></script> <script> loadJsonFromPHP(<?php echo json_encode($data) ?>); </script> </head> <body></body> </html>
Изменить: предполагается, что вам нужно только получить данные в JS один раз при загрузке страницы, и в этом случае вы можете пропустить выполнение запросов AJAX.
Передача PHP JSON на Javascript и чтение
var stuff = <?php print json_encode($datajson); ?>; var arr = new Array(); arr= JSON.parse(stuff); document.write( arr[0].cust_code );
JSON может обрабатывать любой тип массива (хотя он будет передавать ассоциативные массивы как объекты). Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что вы пытаетесь выводить с PHP, когда данные доступны только на Javascript.
Чтобы уточнить: как только страница загрузится, PHP ничего не может сделать. Только javascript может обрабатывать вещи на стороне клиента, PHP работает только на сервере и не знает состояния клиента.
Я никогда не пытался делать что-то подобное, но я думаю, что у вас проблема, потому что json_encode возвращает строку, закодированную json. Затем вам нужно декодировать эту строку на стороне JavaScript. Попробуйте следующее:
var myJson = JSON.parse(<?php echo json_encode($data) ?>); console.log(myJson);