无法从PHP获得价值到Javascript
因此,在我的PHP文件中,我创建了一个JSON对象,我需要获取我的Javascript文件进行处理。我似乎却无法转移任何东西,甚至不是一个简单的字符串是这样的: -无法从PHP获得价值到Javascript
的index.php
<?php
$cookie= "blueberry cake";
?>;
的script.js
var details = "<?php echo $cookie; ?>";
function myFunction() {
document.getElementById("demo").innerHTML = details;
}
指数.html
<html>
<head>
<script src="script.js"></script>
<title>antgus</title>
</head>
<body>
<h1>Welcome to my page! </h1>
<button type="button" onclick="myFunction()">Try it</button>
<p id="demo">A Paragraph.</p>
</body>
我在我的HTML中有一个按钮,所以当我按下函数myFunction get的函数。它应该将id为“demo”的p元素更改为字符串“blueberry cake”
任何想法我在这里做错了吗?
编辑
我现在有工作,除了一两件事,我不能一个JSON对象传递给我的Javascript功能。控制台抛出一个错误,指出参数是错误的,它认为我传递了多个字符串。 的index.php
<?php
$test = "blue";
$logLines = file('../../../home/shares/flower_hum/humid.log');
$entries = array_map("clean",$logLines);
$finalOutput = [
'humid' => $entries
];
function clean($string){
return json_decode(rtrim(trim($string),','),true);
}
$json = json_encode($finalOutput, JSON_UNESCAPED_SLASHES);
echo $json; //displays valid JSON, I have checked it.
?>
<html>
<head>
<script src="script.js"></script>
<title>antgus</title>
</head>
<body>
<p>Welcome to my page! Down below you can see the data:</p>
<button type="button" onclick='myFunction("<?php echo $json ?>")'>Try it</button>
<p id="demo">A Paragraph.</p>
</body>
</html>
的script.js
function myFunction(jsonObject) {
document.getElementById("demo").innerHTML = "INCOMING DATA:";
alert(jsonObject);
}
enter code here
需要考虑的事情: - 你尝试过
1.External JS将无法正常工作。
2.当您通过onclick
代码直接调用javascript函数时,则必须传递数据以进一步工作。
的工作代码示例: -
的index.php: -
<?php
$cookie= "blueberry cake";
?>
<html>
<head>
<script src="script.js"></script>
<title>antgus</title>
</head>
<body>
<h1>Welcome to my page! </h1>
<button type="button" onclick='myFunction("<?php echo $cookie; ?>")'>Try it</button>
<p id="demo">A Paragraph.</p>
的script.js: -
function myFunction(details) {
document.getElementById("demo").innerHTML = details;
}
输出在我的地方结束: -
前点击: - http://prntscr.com/ci94s9
后点击: - http://prntscr.com/ci94w9
外部JS文件不会被解析为PHP的意思是,你不能访问该变量。你可以将你的js保存为php(不推荐)。可替换地)
包括在PHP页面的底部的底部该函数:
<?php
$cookie= "blueberry cake";
?>;
//js further down the same page
<script>
var details = "<?php echo $cookie; ?>";
function myFunction() {
document.getElementById("demo").innerHTML = details;
}
</script>
或b)宣布在PHP页面一个全局变量,使得外部JS可以访问它:
//php page
<?php
$cookie= "blueberry cake";
?>;
<script> var details = "<?php echo $cookie; ?>";</script>
//js file
function myFunction() {
//details will be accessible since it has been declared in the global space of the index.php page
document.getElementById("demo").innerHTML = details;
}
我试过你的第二个例子,但它似乎没有做任何事情。 – lolzDoe
这应该很好地工作:
在-js文件:
<?php
$cookie= "blueberry cake";
?>;
<html>
<head>
<script type="text/javascript">
var details = "<?php echo $cookie; ?>";
function myFunction() {
document.getElementById("demo").innerHTML = details;
}
</script>
<title>antgus</title>
</head>
<body>
<h1>Welcome to my page!</h1>
<button type="button" onclick="myFunction()">Try it</button>
<p id="demo">A Paragraph.</p>
</body>
随着外部JS:
<?php
$cookie= "blueberry cake";
?>;
<html>
<head>
<script type="text/javascript">
var details = "<?php echo $cookie; ?>";
</script>
<script type="text/javascript" src="script.js"> </script>
<title>antgus</title>
</head>
<body>
<h1>Welcome to my page!</h1>
<button type="button" onclick="myFunction()">Try it</button>
<p id="demo">A Paragraph.</p>
</body>
脚本。js文件:
function myFunction() {
// HAS ACCESS TO details WHICH IS ON THE GLOBAL SCOPE
document.getElementById("demo").innerHTML = details;
}
编码使用json_encode
JSON对象,那就是
<script> var details = "<?php echo json_encode($cookie); ?>";</script>
php-script运行在服务器端,并且javascript运行在客户端,而两者不共享某种范围。
换句话说,$cookie
变量在php中被分配了一个值,但它没有被使用。然后你在你的javascript中使用一个名称相同的变量(但与php变量完全无关),但由于它从来没有分配过任何东西,因此它是undefined
。
gavgrif提供了一些解决方案来解决这个问题。
更新您的完整code.html + php + javascript。 –
您需要将'details'作为参数传递给'myFunction(details)' – Saty
PHP服务器在默认情况下不会解释扩展名为'.js'的PHP代码。如果您将脚本文件的名称更改为'script.php',则PHP代码将被执行。 –