簡體   English   中英

將 PHP 數組發送到 Javascript

[英]Sending PHP array to Javascript

我在 PHP 中創建了一個數組。 我需要將該數組放入 javascript function。 這是我嘗試過的。

$sql = "SELECT * FROM Questions WHERE Form_ID='$FormID' AND QuestionsDataHave='YES' ORDER BY Questions_ID+0, Questions_ID";
$GetTheValidationRule = mysqli_query($con, $sql);
$ValidatinArray = array();
$J = 0;
while($RowVal = mysqli_fetch_array($GetTheValidationRule)){
    $ValidatinArray[$J] = $RowVal['Validation_Type'];
    $J++;
}

這是我的 javascript 代碼。

$(document).ready(function() {
    $("form").submit(function(){
    var P= <?php echo json_encode($ValidatinArray); ?>;
        var O = P.length;
        alert(O);
        return false;
    });
}); 

但這給了我這樣的錯誤

 SyntaxError: syntax error
 var P= <br />

是不是可以通過這種方式獲取數組。 請有人幫助我。

更新:這是我的錯誤消息的最終輸出

<script>
    $(document).ready(function() {
        $("form").submit(function(){
            alert('AAAAAAAAAAAAAAAAAAA');
            var IDsOfTheColumns = document.getElementsByName("DataColumnID[]");
            var Data = document.getElementsByName("DataInputValue[]");
            var A = IDsOfTheColumns.length;
            alert(A);
            <br />
            <b>Notice</b>:  Undefined variable: ValidatinArray in <b>C:\xampp\htdocs\PHIS\CreateTheForm.php</b> on line <b>16</b><br />
            var P = null;   return false;
        });
    });
</script>

問題是,變量$ValidatinArray在文件中不可用,它打印了 javascript 代碼。 也許這個手冊頁可以幫助你:

http://www.php.net/manual/en/language.variables.scope.php

您的標簽來自您提交的表單。 在編碼之前檢查表單數據是什么以驗證輸出。 你可以使用 console.log($("form));

同樣使用表單也不是一個好主意,因為如果您有多個表單並且表單是一個全局名稱。 對於表單,您應該為其指定一個唯一的表單名稱,例如“myForm”,以便您可以定位該特定表單。

希望這有幫助

抱歉回復晚了...嘗試將您的文檔重寫為:

$(document).ready(function() {
    $("form").submit(function(){
    var P = JSON.parse('<?php echo json_encode($ValidatinArray); ?>');
        var O = P.length;
        alert(O);
        return false;
    });
});

試試這個:

<?php


    echo   ' <script>
             $(document).ready(function() {
                                $("form").submit(function(){
                                var P= '. json_encode($ValidatinArray) . ';
                               var O=P.length;
                                 alert(O);
                               return false;
                          });
                   }); 
               </script>';

?>

您所做的只是使用 php 回顯 js。

首先,我建議您驗證變量 $ValidatinArray 是否存在,並且它是否被正確傳遞到您正在執行“echo”的文件。

您顯示的錯誤表明從一開始包含該數組的變量不存在。 如果 SQL 查詢在 php function 內,請檢查您是否正在返回變量。 例子

<?php 

  function GetData(){
   // ... here is the code to get the information from the database ...
   return $ValidatinArray;
  
  }

  $ValidatinArray = GetData();
?>

一旦您確認此數組存在,我們現在可以看到將數據傳遞給 JavaScript 的問題:

It all depends on how the structure is, if you have the PHP code and the JavaScript function in the same file you can simply use this method inside the php fil:

// ... php file code
?>
    <script>
      $(document).ready(function() {
       $("form").submit(function(){

       // you can use any of the two methods that I leave you here
       // Using only json_enconde
       var P= <?= json_encode($ValidatinArray) ?>;

       // Using json_enconde to pass the array as a string and using JSON.parse to have JavaScript convert it to an object
       var P= JSON.parse('<?= json_encode($ValidatinArray) ?>');

       var O = P.length;
       alert(O);
       return false;
      });
     });
    </script>

如果在打開頁面時執行 php 文件,並且包含 JavaScript 中的 function 的文件位於另一個文件中:

您可以從 php 代碼生成“全局” JavaScript 變量,如下所示

 // ... code php file
 ?>
 <script>
     window.variablename = <?= json_encode($ValidatinArray) ?>
 </script>
 <?php

在您的 JS 文件中,您可以像這樣接收數組

$(document).ready(function() {
    $("form").submit(function(){
       var P= window.variablename ;
       var O = P.length;
       alert(O);
       return false;
    });
  });

PD:使用 <?= 等同於使用 echo

在 php json_encode 中,數組是這樣的:

$inlinejs='';
$inlinejs.='var validatinArray=\''.addslashes(json_encode($ValidatinArray)).'\';'."\n";
$inlinejs.='var validatinArray=eval(\'(\' + validatinArray + \')\');'."\n";

在 javascript 中:

$(document).ready(function() {
    $("form").submit(function(){
    <?php echo $inlinejs; ?>
    console.log(validatinArray);
    });
}); 

暫無
暫無

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

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