我从互联网上获取此代码,它可以正常工作
<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>
答案 0 :(得分:2)
由于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>
我认为这更符合最初的例子。
答案 1 :(得分:1)
语法不正确。根据W3 HTML规范,脚本标记不能位于另一个脚本标记内。为了将来的调试目的,请尝试将整个输出字符串通过验证检查(validator.w3.org)。这将告诉您编码错误,并帮助您了解可以采取行动的错误。
答案 2 :(得分:1)
你得到的代码将生成像这样的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>
您无法在脚本标记内编写脚本标记。这就是它产生错误的原因
答案 3 :(得分:1)
当php回显变量$abc
时,结果大致为:
<script type="text/javascript">
var jvalue = 'this is javascript value';
<script>document.write(jvalue)</script>
</script>
这是无效的,因为您无法在另一个脚本标记(也称为“嵌套”)中放置脚本标记。
从<script>
删除$abc
代码应该修复它。
以下方法可行:
<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)"; ?>