簡體   English   中英

如何將PHP數組參數傳給Javascript Function?

[英]How to pass PHP array parameter to Javascript Function?

index.php

<script type="text/javascript" src="javascript.js"> </script>
<?php
 $movies = array("Bloodsport", "Kickboxer", "Cyborg", "Timecop", "Universal Soldier", "In Hell", "The Quest");
?>

<input type="submit" value="Test Javascript" onclick="showMovies(<?php echo $movies; ?>);" />


javascript.js

function showMovies(movies) {
 alert(movies.length);

 return false;
}

我是編程新手,所以我很難修復這個對你們來說顯然很簡單的問題。

當我點擊提交按鈕時,它說數組大小為 1,我認為應該是 7。這怎么可能?

<input type="submit" value="Test Javascript" onclick='showMovies(<?php echo json_encode($movies); ?>);' />

Notice the json_encode , which encodes objects or arrays for Javascript (JSON stands for JavaScript Object Notation) and also notice the ' instead of " , because JSON uses " .

雖然,這個解決方案會更好:

<script type="text/javascript">
    document.getElementByID('submitButton').onclick = function() {
        var movies = <?php echo json_encode($movies); ?>;
        showMovies(movies);
    };
</script>
...
<input type="submit" value="Test JavaScript" id="submitButton">

嘗試這個

PHP 代碼

<script type="text/javascript" src="javascript.js"> </script>
<?php
  $movies = array("Bloodsport", "Kickboxer", "Cyborg", "Timecop", "Universal Soldier", "In Hell", "The Quest");
  $mov_str = implode(",", $movies);
?>

<input type="submit" value="Test Javascript" onclick="showMovies('<?php echo $mov_str; ?>');" />

在 Javascript 文件中

function showMovies(movies) {
  movies = movies.split(",");
  alert(movies.length);
 return false;
}

Output

7

我希望這能幫到您。

輸出前編碼為 JSON。

<input type="submit" value="Test Javascript" onclick="showMovies(<?php echo json_encode($movies); ?>);" />

您的 PHP 變量僅存在於服務器上。 它們與客戶端上的 JavaScript 變量完全分開。 將值從服務器傳遞到客戶端的唯一機制是通過 web 頁面的內容(或通過AJAX的特別請求的幕后 web 內容)。

這意味着要使您的 JavaScript 接收 PHP 值,您必須編寫 JavaScript 並將這些值嵌入其中。 您必須將 PHP 與 JavaScript 混合至少一點點,以使在客戶端上運行的東西能夠從服務器獲取任何數據。

這就是所有 web 服務器端腳本在所有語言中的工作方式。

JavaScript 根本無法知道您的電影變量中發生了什么,除非您在 JavaScript 中將其填滿值。

我建議您查看@levu 的答案,以了解將 PHP 變量的值轉換為 JavaScript 的好方法。

<?php
  $movies = array("Bloodsport", "Kickboxer", "Cyborg", "Timecop", "Universal Soldier", "In Hell", "The Quest");
  $str=implode(",",$movies);
?>
<script type="text/javascript" >
  var arr=new Array();
  var str="<?php echo $str; ?>";
  arr=str.split(',');
  //alert(arr.toSource());
  function showMovies(movies) {
    alert(movies.length);
    return false;
  }
</script>

<input type="submit" value="Test Javascript" onclick="showMovies(arr)" >

嘿,請在上面使用以獲得您想要的結果。 它是經過測試的代碼。

您可以通過 json_encode() 在 js 中傳遞數組 php function .. json_encode() 會將數組轉換為字符串。 您可以通過在 js 中刪除該字符串來獲取數組。

您還可以使用 json_encode() 解析 JavaScript 的數組

$array = array('1','a','b');

echo '<script type="text/javascript">';
echo 'var x = ' . json_encode($array) . ';';
echo '</script>';

這也適用於關聯 arrays:

$array = array("x" => '1',"y" => 'a',"z" => 'b');
echo '<script type="text/javascript">';
echo 'var x = ' . json_encode($array) . ';';
echo '</script>';

我認為這是一個很好的。

onclick="showMovies({{json_encode($movies)}})"

由我的一位同事解決(Istiaq Harun Shovon)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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