我从互联网上得到了这个代码,它工作正常
<script type="text/javascript">
var jvalue = 'this is javascript value';
<?php $abc = "<script>document.write(jvalue)</script>"?>
</script>
<?php echo $abc;?>
但是当我把</script>
放在最后时,它会停止工作,请解释为什么它停止工作?
<script type="text/javascript">
var jvalue = 'this is javascript value';
<?php $abc = "<script>document.write(jvalue)</script>"?>
<?php echo $abc;?>
</script>
因为abc
是<script>document.write(jvalue)</script>
的,你不能嵌套<script>
标签。正如您的第二个示例所做的那样。你可以做到,
<script type="text/javascript">
var jvalue = 'this is javascript value';
<?php $abc = "document.write(jvalue)"?>
<?php echo $abc;?>
</script>
你也可以做,
<?php $abc = "document.write(jvalue)"?>
<script type="text/javascript">
var jvalue = 'this is javascript value';
<?php echo $abc;?>
</script>
我认为这更符合原始示例。
你得到的代码将产生这样的html
<script type="text/javascript">
var jvalue = 'this is javascript value';
</script>
<script>
document.write(jvalue)
</script>
但是您更改的代码将产生如下
<script type="text/javascript">
var jvalue = 'this is javascript value';
<script>
document.write(jvalue)
</script>
</script>
不能在脚本标记内写入脚本标记。这就是为什么它会产生错误
语法不正确。根据 W3 HTML 规范,一个脚本标记不能位于另一个脚本标记内。出于将来的调试目的,请尝试将整个输出字符串通过验证检查 (validator.w3.org)。这将告知您有关编码错误的信息,并将帮助您了解可以采取行动的错误。
当 php 回显你的变量$abc
时,结果大约为:
<script type="text/javascript">
var jvalue = 'this is javascript value';
<script>document.write(jvalue)</script>
</script>
这是无效的,因为您不能将脚本标签放在另一个脚本标签(又名"嵌套")中。
从$abc
中删除<script>
标签应该可以修复它。
以下方法将起作用:
<script type="text/javascript">
var jvalue = 'this is javascript value';
<?php $abc = "document.write(jvalue)" ?>
<?php echo $abc; ?>
</script>
我不是PHP专家,但我希望如果代码中的其他地方不需要$abc,则可以将这两行PHP替换为:
<?php echo "document.write(jvalue)"; ?>