javascript typeof不适用于PHP变量?

时间:2012-05-22 20:07:00

标签: php javascript variables

只是想知道,“typeof”javascript验证(你知道,你在javascript中检查未定义的变量的方法)与PHP变量的工作方式不同吗?

我做

alert(typeof <? echo $_SESSION['thing'] ?>);

这甚至都没有执行(我认为它至少会弹出为空白)

但如果我这样做

alert(<? echo $_SESSION['thing'] ?>);

警报说“未定义”

所以我想知道使用javascript检查未定义PHP变量的正确方法是否只是为了回应它们?如果不是,请纠正我,但如果是,我认为分享是好的。

由于

5 个答案:

答案 0 :(得分:1)

if(isset($_SESSION['thing'])) {
   echo 'thing is set';
} else {
   echo 'thing is not set';
}

这是检查变量是否已设置的PHP方法。

http://uk.php.net/isset

修改

如果我想在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