从PHP传递时未定义Javascript值
更新:感谢所有帮助过我们的人。我希望这里的无数解决方案能够为任何面临类似困难的人提供参考 我正在用PHP读取一个文本文件,我需要将字符串传递到JS中进行操作。我尝试了更直接的方法将PHP放入外部JS文件中,但是没有成功,所以我使用了一个空的div容器。然而,在JS中,我仍然得到一个未定义的值。该文件正确读取div值,但不会传递到外部javascript文件 HTML:从PHP传递时未定义Javascript值,php,javascript,undefined,Php,Javascript,Undefined,更新:感谢所有帮助过我们的人。我希望这里的无数解决方案能够为任何面临类似困难的人提供参考 我正在用PHP读取一个文本文件,我需要将字符串传递到JS中进行操作。我尝试了更直接的方法将PHP放入外部JS文件中,但是没有成功,所以我使用了一个空的div容器。然而,在JS中,我仍然得到一个未定义的值。该文件正确读取div值,但不会传递到外部javascript文件 HTML: 如果有一种方法可以让在外部javascript文件中从PHP中提取变量起作用,我更愿意这样做 对div使用value属性是没有意
如果有一种方法可以让在外部javascript文件中从PHP中提取变量起作用,我更愿意这样做 对div使用value属性是没有意义的。使用隐藏的textarea元素代替div,并使用以下方法将文件内容放入其中:
<textarea id="fileContent" style="display:none"><?php echo $world; ?></textarea>
将返回文本区域内容将value属性设置为div没有意义。请使用隐藏的textarea元素,而不是div,并使用类似以下内容将文件内容放入其中:
<textarea id="fileContent" style="display:none"><?php echo $world; ?></textarea>
将返回文本区域内容对此我不确定,但可能是2个
$world
变量在不同的范围内。尝试:
<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()">
<canvas id="game" width="650" height="366" style="border: 2px solid black;"></canvas>
<br />
<h1> Currently in development.</h1>
<br />
<div id="world" value="<?php echo file_get_contents('http://url.com/testworld.txt'); ?>" />
</body>
</html>
目前正在开发中。
我不确定这一点,但可能是2$world
变量在不同的范围内。尝试:
<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()">
<canvas id="game" width="650" height="366" style="border: 2px solid black;"></canvas>
<br />
<h1> Currently in development.</h1>
<br />
<div id="world" value="<?php echo file_get_contents('http://url.com/testworld.txt'); ?>" />
</body>
</html>
目前正在开发中。
尝试更改:
<div id="world" value="<?php echo $world; ?>" />
致:
如果需要,可以添加display:none的样式编码>到div以隐藏它。尝试更改:
<div id="world" value="<?php echo $world; ?>" />
致:
如果需要,可以添加display:none的样式
到div以隐藏它。value
对DOM元素有特殊意义(它指的是文本框等的值)。相反,您可以使用诸如数据值
,然后使用document.getElementById('world').getAttribute('data-value')检查它代码>
但是,更好的方法是使用隐藏的输入,例如
<input type="hidden" id="world" value="<?php echo $world; ?>" />
value
对DOM元素有特殊意义(它指文本框等的值)。相反,您可以使用诸如数据值
,然后使用document.getElementById('world').getAttribute('data-value')检查它代码>
但是,更好的方法是使用隐藏的输入,例如
<input type="hidden" id="world" value="<?php echo $world; ?>" />
您应该在隐藏的输入字段中指定该值,而不是在div标记中指定该值。这是一种更好的方法
这样地
您应该在隐藏的输入字段中指定该值,而不是在div标记中指定该值。这是一种更好的方法
这样地
从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>
那么您就不必担心太多的范围问题了?从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>
那么你就不必太担心范围界定了?另一种方式:
在php中
<div id="world" data-world="<?php echo $world; ?>" />
另外,您可能需要确保$world的值被正确转义,以用作html属性另一种方式:
在php中
<div id="world" data-world="<?php echo $world; ?>" />
另外,您可能希望确保$world的值被正确转义,以用作html属性,因此我尝试使用隐藏输入和文本区域。我仍然在定义JS变量的行中遇到Chrome控制台错误“无法读取null的属性'value'(或'innerHTML')”。这太奇怪了。请包括浏览器看到的HTML,请包括相关的JAVASCRIPT:-)错误是由someNullExpression引起的。innerHTML
,这不能是上面发布的代码的结果,因为没有innerHTML
。我的意思是,当我尝试下面要求我从“value”更改为“innerHTML”的解决方案时,它将我的“innerHTML”设置为null。上面的代码就是一切。@ZachWulf当您更改为innerHTML时,您是否也更改了div标记?是的……对于所有这些解决方案,我已经更改了与元素对应的相应属性。我得到的最接近的是patbolo的HTML5解决方案,但在页面上它只是吐出“未定义”。这就好像我的JS文件中的变量完全不知道我的PHP文件在哪里,它必须从中提取。我仍然在定义JS变量的行中遇到Chrome控制台错误“无法读取null的属性'value'(或'innerHTML')”。这太奇怪了。请包括浏览器看到的HTML,请包括相关的JAVASCRIPT:-)错误是由someNullExpression引起的。innerHTML
,这不能是上面发布的代码的结果,因为没有innerHTML
。我的意思是,当我尝试下面要求我从“value”更改为“innerHTML”的解决方案时,它将我的“innerHTML”设置为null。上面的代码就是一切。@ZachWulf当您更改为innerHTML时,您是否也更改了div标记?是的……对于所有这些解决方案,我已经更改了与元素对应的相应属性。我得到的最接近的是patbolo的HTML5解决方案,但在页面上它只是吐出“未定义”。这几乎就像我的JS文件中的变量完全不知道我的PHP文件在哪里,它必须从中提取一样
var world = document.getElementById('world').innerHTML;
<?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>
<?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>
<script type="text/javascript">
//Load the game world, and pass to the javascript lib
var world = <?=json_encode($world)?>;
loadWorld(world);
</script>
<div id="world" data-world="<?php echo $world; ?>" />
$('#world').attr('data-world');