簡體   English   中英

無法從PHP到Javascript獲得價值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM