将PHP变量传递给Javascript会返回NULL

时间:2015-03-02 17:08:43

标签: javascript php json

我知道有很多问题涉及类似的事情,但我没有运气就尝试了答案。

PHP片段:

$usernum_query = "SELECT numPersonID FROM tbllogins WHERE txtUserName='$currentuser'";

if(!$usernumber = $db1->query($usernum_query)){
    die('There was an error running the usernumber query [' . $db1->error . ']');
}

while($row = $usernumber -> fetch_assoc()) {
  $userIDnum = $row['numPersonID'];
  $userIDnum = utf8_encode($userIDnum);
}

Javascript片段:

$(function(){

  $("#0").click(function(){

        var userIDnum = <?php echo json_encode($userIDnum); ?>;
        alert(userIDnum);

我遇到的最常见的答案是UTF_encode我的变量,我认为我已经正确完成了。我也试过了:

var userIDnum = <?php echo $userIDnum; ?>;

哪个不起作用。

在我脚本之外的HTML中,

<?php echo json_encode($userIDnum); ?>

返回“90”(带引号)

<?php echo $userIDnum; ?>

返回90(不带引号)。

在脚本中,我分别得到null而没有警告框。

关于为什么变量没有传递到脚本的任何想法?谢谢!

编辑:尝试使用引号并得到相同的结果

4 个答案:

答案 0 :(得分:1)

[取自要求的评论]

如果我可以提出建议,请将您的值放在HTML中的数据属性中(例如<body data-user-id="<?php echo $userId ?>">。这可以防止您将代码语言混合在一起,难以阅读,并允许您的外部脚本正确运行而不使其成为PHP页面。

就IE9而言,我会快速浏览一下。您可能想看看jQuery如何管理数据属性。你应该至少可以访问

domObject.getAttribute('data-user-id').

是的,只是快速查找,甚至IE10也不支持数据集功能。因此,您需要使用getAttribute for IE&lt; = 10。

答案 1 :(得分:0)

尝试在while

之前声明变量 $ userIDnum

答案 2 :(得分:0)

基于calamari建议的解决方案:

在HTML中:

<!DOCTYPE html>
<!--[if lt IE 11 ]> <html class="ie10orless"> <![endif]-->
<head>
... more code here ...

在剧本中:             var oldIE;                 if($(&#39; html&#39;)。是(&#39; .ie10orless&#39;)){                     oldIE = true;                 }

    if (oldIE) {
        var x = document.getElementsByTagName("div")[0].getAttribute("data-number"); 
        alert("in IE");
        alert(x);
    } else {
        var userinfo = document.querySelector('#user');
        alert("NOT in IE");
        alert(userinfo.dataset.number);
    }

希望这有助于其他人。还要感谢大家的其他建议。

答案 3 :(得分:-1)

有几件事需要检查。让我们说这是你的脚本:

<?php $htmlString= 'testing'; //Lets say this is a snippet of your php 
?>
<html>
  <body>
    <script type="text/javascript"><!-- And this is the snippet of your JS -->
      // notice the quotes around the ?php tag         
      var htmlString="<?php echo $htmlString; ?>"; //Make sure there's double 
                                                   //quotes around your php
      alert(htmlString);
    </script>
  </body>
</html>

确保在名为.php的文件中包含PHP和JS。如果它是一个外部的.js文件,它里面的php将无法正常工作(你可以将JS文件重命名为.php扩展名,如果你设置的那样)

还要确保你有html,php和js设置方式如上。 php周围必须有双引号,例如:

var userIDnum = <?php echo json_encode($userIDnum); ?>;

将此更改为以下内容:

var userIDnum = "<?php echo json_encode($userIDnum); ?>";