如何在JavaScript或jQuery中访问PHP变量?我必须写
<?php echo $variable1 ?>
<?php echo $variable2 ?>
<?php echo $variable3 ?>
...
<?php echo $variablen ?>
Run Code Online (Sandbox Code Playgroud)
我知道我可以在cookie中存储一些变量,并通过cookie访问这些值,但cookie中的值是相对稳定的值.而且,有一个限制,你不能在cookie中存储很多值,并且方法不那么方便.有没有更好的方法呢?
我正在从PHP数组创建一个JSON字符串.我用它编码了json_encode().
$data = array(
'title' => 'Example string\'s with "special" characters'
);
$data = json_encode( $data );
Run Code Online (Sandbox Code Playgroud)
$data使用本地化wp_localize_script()并可通过全局data变量访问.
在JS文件中,我可以通过以下方式访问信息:
var data = data.replace( /"/g, '"' ),
jsonData = jQuery.parseJSON( data );
console.log( jsonData );
Run Code Online (Sandbox Code Playgroud)
这导致输出:
{ "title":"Example string's with "special" characters" }
Run Code Online (Sandbox Code Playgroud)
将结果输入http://jsonlint.com/会返回错误.删除"特殊"周围的双引号可验证字符串.
从PHP创建JSON字符串并正确转义它以在JS文件中使用的最佳方法是什么?
我在编写的PHP脚本中遇到了一个奇怪的问题 - 我确信这是一个简单的答案,但我没有看到它.
我正在使用PHP从数据库中提取一些变量,然后将这些值传递给在PHP中动态构建的Javascript.像这样的东西:
$myvar = (bool) $db_return->myvar;
$js = "<script type=text/javascript>
var myvar = " . $myvar . ";
var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
</script>";
Run Code Online (Sandbox Code Playgroud)
问题是如果DB中"myvar"的布尔值是false,那么$ js中myvar的实例是null,而不是false,这就破坏了脚本.
有没有办法将值正确传递false给myvar变量?
谢谢!
在我的应用程序中,我非常依赖JavaScript来增强用户界面,但所有数据都来自数据库并由PHP处理.默认情况下,我使用'echo'语句来"及时"替换所需的值,如下所示:
var myVariable = <?php echo $myVariableInPHP ?>
Run Code Online (Sandbox Code Playgroud)
然而,这并没有让我感到非常优雅,我担心这些代码的稳定性和可维护性.
我在这里有其他选择吗?
对于服务器端,我使用的是Symfony 1.4 PHP框架.
谢谢,
的JSON标准以一种方式定义的目的和ECMAScript的(JavaScript的)标准定义它在另一个.
通常说JSON对象是JavaScript对象的子集,这是真的吗?
每个JSON对象都是有效的JavaScript对象吗?
我在php中有对象,每个对象代表一个"项目"以及与之关联的所有信息.
当用户浏览页面时,这些对象应该传递给javascript.理想情况下,镜像相同的结构,所以我可以使用Raphael在我的网站上将每个项目及其信息显示为单独的形状.
但是,如何从php获取对象到javascript?
我不时要将一些变量从PHP传递给JS脚本.现在我这样做了:
var js-variable = "<?php echo $php-variable; ?>";
Run Code Online (Sandbox Code Playgroud)
但这非常难看,我无法在.js文件中隐藏我的JS脚本,因为它必须由PHP解析.处理这个问题的最佳解决方案是什么?
当我看到解决http://escape.alf.nu第15级的答案时,我注意到这<!--<script>将导致DOM解析器中断.在以下HTML中,您将看不到字符串"Test"(在IE 11和Firefox&Chrome上测试):
<!DOCTYPE HTML>
<html>
<body>
<script>
var a = '<!--<script>';
</script>
<p>Test</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是这两个脚本将显示"Test":
<!DOCTYPE HTML>
<html>
<body>
<script>
var a = '<!--';
</script>
<p>Test</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和,
<!DOCTYPE HTML>
<html>
<body>
<script>
var a = '<script>';
</script>
<p>Test</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我不明白,为什么会这样?
<html>
<?php
$num = 1;
echo $num;
?>
<input type="button"
name="lol"
value="Click to increment"
onclick="Inc()" />
<br>
<script>
function Inc()
{
<?php
$num = 2;
echo $num;
?>
}
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止,虽然没有工作,我认为我需要使用ajax或其他东西,但我不知道该怎么做.
谢谢
javascript ×9
php ×8
json ×2
ajax ×1
cakephp ×1
cakephp-2.0 ×1
client-side ×1
dom ×1
encoding ×1
escaping ×1
function ×1
html ×1
jquery ×1
object ×1
symfony1 ×1