-4

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

我愿意

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

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

但如果我这样做

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

警报显示“未定义”

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

谢谢

4

5 回答 5

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其输出到警报语句中,如果不是,则警告一个空白值。

于 2012-05-22T20:09:32.730 回答
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 中引用该值。否则可能会导致更多错误。

于 2012-05-22T20:09:36.403 回答
0

想想会发生什么。PHP 在服务器上执行。PHP 语句的result插入到发送到客户端的 HTML/JavaScript 中。

因此,如果您的会话变量包含Foo,结果将是

alert(typeof Foo);

alert(Foo);

正如您可能理解的那样,Foo 不是在您的客户端 JavaScript 的上下文中定义的。

于 2012-05-22T20:11:39.577 回答
-1

您需要将变量分配给 javascript 变量。如果您在 php 渲染后查看 HTML 源代码,您可能会看到如下内容:

alert(typeof some value for thing);

这将是一个语法错误。

改为这样做

var thing = "<?php echo $_SESSION['thing']; ?>";
alert( typeof thing );
于 2012-05-22T20:10:32.307 回答
-2
alert(typeof <? echo $_SESSION['thing'] ?>);

这有一个糟糕的语法 - 它应该是alert(typeof(some_variable))

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

这应该像

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

而且您尝试做的事情毫无意义,因为 js 应该如何使用来自不同语言的变量?oO

于 2012-05-22T20:09:54.123 回答