Очень просто передавать данные из PHP -> JS, не прибегая к их скрытию внутри DOM.Хитрость заключается в функции json_encode () - она преобразует строки php, массив и т. Д. В допустимый формат javascript.См. Ваш пример ниже, исправленный:
<?php
$world = file_get_contents('http://url.com/testworld.txt');
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="js/game.js"></script>
</head>
<body onload="init()">
<script type="text/javascript">
//World is defined here, and accessible to the javascript that runs on the page
var world = <?=json_encode($world)?>;
</script>
<canvas id="game" width="650" height="366" style="border: 2px solid black;"></canvas>
<br />
<h1> Currently in development.</h1>
<br />
</body>
Я почти уверен, что ваши проблемы возникают из-за способа, которым область видимости переменных работает в javascript.Этот простой пример должен работать на вас:
<?php
$foo = "\"Hello world!\"";
?>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var foo = <?=json_encode($foo)?>;
alert("The value of foo is: " + foo);
</script>
</body>
</html>
Таким образом, в контексте встроенного сценария присутствует переменная foo
.Возможно, если бы ваш код выглядел следующим образом:
<script type="text/javascript">
//Load the game world, and pass to the javascript lib
var world = <?=json_encode($world)?>;
loadWorld(world);
</script>
, тогда вам не пришлось бы так сильно беспокоиться о области видимости?