[英]Cannot get value from PHP to Javascript
因此,在我的PHP文件中,我創建了一個JSON對象,我需要將其轉到Javascript文件進行處理。 但是,我似乎無法傳輸任何內容,即使使用這樣的簡單字符串也是如此:
的index.php
<?php
$cookie= "blueberry cake";
?>;
的script.js
var details = "<?php echo $cookie; ?>";
function myFunction() {
document.getElementById("demo").innerHTML = details;
}
的index.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”的ap元素更改為字符串“ 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
外部js文件不會被解析為php,這意味着您無法訪問該變量。 您可以將js保存為php(不推薦)。 或者a)
在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;
}
這應該工作完美:
使用文檔內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>
script.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>
要考慮的事情:
1,外部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
刪除php周圍的引號,老兄。 您正在分配字符串而不是php變量值。
var details = "'" + <?php echo $cookie; ?> + "'";
這將分配實際的$cookie
值,而不是字符串'<? php echo $cookie; ?>'
'<? php echo $cookie; ?>'
'<? php echo $cookie; ?>'
。
php-script在服務器端運行,而javascript在客戶端運行,兩者不共享某種范圍。
換句話說, $cookie
變量在php中分配了一個值,但未使用。 然后,您在javascript中使用具有相同名稱的變量(但與php變量完全無關),但是由於從未分配任何變量,因此undefined
。
gavgrif提供了一些解決方案來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.