我知道有很多问题涉及类似的事情,但我没有运气就尝试了答案。
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而没有警告框。
关于为什么变量没有传递到脚本的任何想法?谢谢!
编辑:尝试使用引号并得到相同的结果
答案 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); ?>";