2012-05-22 24 views
-4

只是想知道,“typeof”javascript验证(你知道,你做什么来检查在javascript中未定义的变量)不与PHP变量同样的方式?javascript typeof不能与PHP变量一起使用?

我做

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

,这甚至不执行(我推测它至少弹出空白)

但如果我这样做

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

的警告说“未定义”

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

感谢

+0

只是回声他们。我一直这样做,因为它的PHP变量不是一个JS。 – magicianiam

+0

我想这很大程度上取决于你的$ _SESSION ['thing']'的值。你期望在那里有什么价值? – Tharabas

+0

php是服务器端,javascript是客户端 – Boundless

回答

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中引用的值,如果它是一个字符串。否则,它可能会导致更多的错误。

+0

我想要做的是从PHP变量中读取一个结果为三元条件,以在JavaScript中设置变量。如果PHP为空/未定义,则将变量设置为0,如果不是,则将其设置为 – user1159454

+0

内部的发起者哇,这很难验证一个变量是不是?我仍然没有为什么这不起作用... <?echo $ _SESSION ['thing']; ?> ==“undefined”)?警报(“是”):警报(“否”); – user1159454

+0

如果事情是4,不会JavaScript读取作为4 ==“未定义”(假,所以弹出“否”)? – user1159454

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发送到警报语句中,如果不是,则会提示空白值。

+0

根据您的目标,代码可以工作,但是您的答案没有解决OP误解发生的实际问题。 – GolezTrol

+0

我的错,检查编辑。 – vimist

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

这有语法错误 - 它应该是alert(typeof(some_variable))

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

这应该是像

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

和你正在尝试做是没有意义的,因为怎么被JS应该使用不同语言的变量? o.O

+0

typeof是一个操作符而不是函数,它的语法不错,它是正确的,并且允许使用它而不用括号。然而,这是不好的做法,你应该使用括号。 –

+2

对操作员不使用括号的不良做法?你还写(1)+(2)吗? – GolezTrol

+0

引用字符串中的任何PHP输出意味着最终结果将始终是一个字符串。但是如果你想从PHP输出** 10e19 **,那么即使没有引号,javascript也会认为它是完全有效的数字语法。随着qootes你永远不能输出一个javascript数组** ** **或一个JavaScript对象** {} ** –

-1

您需要将该变量赋值给一个javascript变量。如果你看看你的PHP已经呈现后的HTML源代码,你可能会看到类似于:

alert(typeof some value for thing); 

这将是一个语法错误。

做到这一点,而不是

var thing = "<?php echo $_SESSION['thing']; ?>"; 
alert(typeof thing); 
+0

然后声明'var thing =对于一些事物的某些值;'会代替失败。 – GolezTrol

+0

@GolezTrol的确是我错过了PHP的引号。现在修复。 – Cfreak

0

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

所以,如果您的会话变量包含Foo,其结果必然是

alert(typeof Foo); 

alert(Foo); 

正如你可能知道,foo是不是在你的客户端的JavaScript的上下文中定义。

相关问题