为什么这个JS变量在我的PHP中运行

Ign*_*cio 1 javascript php jquery

我在一个用脚本标签包装的PHP文件中有一个JS脚本,出于某些奇怪的原因,它工作正常.

我通常会通过AJAX将JS变量分配给PHP,但我错误地尝试了这个并且它工作正常.有什么想法吗?

$(document.body).on("change","select[name=city]", function(){ 
    var v = $(this).val().replace("%","");
    if( v != "undefined" && v != undefined ){
    <?php $options['tax'] = v; ?>
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑:所以稍后在点击事件后我通过JS显示该php变量,并显示正确的值.这对我没有意义.

编辑:所以当我将v分配给php变量时,它就像分配一个常量一样,然后当我用JS $ eshopoptions ['tax']输出它时,它会抛出它解释为javascript变量的'v'.

Mar*_*c B 8

它不起作用.php无效.

<?php $options['tax'] = v; ?>
                        ^---this is an undefined constant in PHP.
Run Code Online (Sandbox Code Playgroud)

只是因为v碰巧出现在JS和PHP中并不意味着它们是同一个变量.他们不是.请记住,PHP在服务器上执行,并且没有CLUE是什么javascript,或者如何解析/执行它.对于Javascript也是如此.它不知道PHP是什么,甚至从来没有SEES php代码,因为当JS引擎在客户端浏览器中启动时,php代码是GONE.

你正在做的是将未定义的常量赋值v$options['tax'].PHP是礼貌的,并假设你忘记在字符串周围加上引号,所以它将代码视为

<?php $options['tax'] = 'v'; ?>
                        ^-^--
Run Code Online (Sandbox Code Playgroud)

由于此代码实际上没有输出任何内容,浏览器将看到:

if (v != "undefined" && v != undefined) {
}  // <-- look ma, no php!
Run Code Online (Sandbox Code Playgroud)