只是想知道,“typeof”javascript验证(你知道,你在javascript中检查未定义的变量的方法)与PHP变量的工作方式不同吗?
我做
alert(typeof <? echo $_SESSION['thing'] ?>);
这甚至都没有执行(我认为它至少会弹出为空白)
但如果我这样做
alert(<? echo $_SESSION['thing'] ?>);
警报说“未定义”
所以我想知道使用javascript检查未定义PHP变量的正确方法是否只是为了回应它们?如果不是,请纠正我,但如果是,我认为分享是好的。
由于
答案 0 :(得分:1)
if(isset($_SESSION['thing'])) {
echo 'thing is set';
} else {
echo 'thing is not set';
}
这是检查变量是否已设置的PHP方法。
修改强> 的
如果我想在JavaScript中检查PHP变量,我想我会这样做:
<?php
echo '<script type="text/javascript">alert("'.(isset($variable) ? $variable : 'Undefined Variable').'");</script>';
?>
上面的代码检查变量是否在PHP中设置,如果是,则echo
将其输出到alert语句中,如果不是,则会提醒空白值。
答案 1 :(得分:1)
JavaScript中没有PHP变量这样的东西。
PHP正在做的是“编写”JavaScript的输出文本。
点击“查看源代码”,查看PHP汇总的最终文本。
添加答案@ Chief17给了你:
var x_string_val = "<?php echo ((isset($value) AND !empty($value)) ? $value : $default) ?>";
var x_any = <?php echo ((isset($value) AND !empty($value)) ? $value : $default) ?>;
var x_type = typeof(<?php echo ((isset($value) AND !empty($value)) ? $value : $default) ?>);
确保从PHP输出引号或在javascript中引用值(如果它是字符串)。否则可能会导致更多错误。
答案 2 :(得分:0)
想想会发生什么。 PHP在服务器上执行。 PHP语句的result
插入发送到客户端的HTML / JavaScript中。
因此,如果您的会话变量包含Foo
,则结果为
alert(typeof Foo);
和
alert(Foo);
如您所知,Foo未在客户端JavaScript的上下文中定义。
答案 3 :(得分:-1)
您需要将变量分配给javascript变量。如果你在php渲染后查看HTML源代码,你可能会看到类似的东西:
alert(typeof some value for thing);
这将是语法错误。
改为
var thing = "<?php echo $_SESSION['thing']; ?>";
alert( typeof thing );
答案 4 :(得分:-2)
alert(typeof <? echo $_SESSION['thing'] ?>);
语法错误 - 应为alert(typeof(some_variable))
alert(<? echo $_SESSION['thing'] ?>);
这应该像
alert("<?php echo $_SESSION['thing']; ?>");
你要做的事情没有意义,因为js应该如何使用不同语言的变量? o.O