将PHP数组发送到Javascript

Sending PHP array to Javascript

本文关键字:Javascript PHP 数组      更新时间:2023-09-26

我用PHP创建了一个数组。我需要将该数组转换为javascript函数。这就是我尝试过的。

$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>

很抱歉延迟响应。。。尝试重写文档。准备为:

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

问题是,在打印javascript代码的文件中,变量$ValidatinArray不可用。也许这个手册页对你有帮助:

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

试试这个:

<?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。

您的标记来自您提交的表单。在对表单数据进行编码以验证输出之前,请检查表单数据是什么。您可以使用console.log($("表单");

此外,使用表单也不是一个好主意,因为如果您有多个表单,并且表单是一个全局名称。对于表单,你应该给它一个唯一的表单名称,比如"myForm",这样你就可以针对特定的表单

希望这能帮助

首先,我建议您验证变量$ValidatinArray是否存在,以及它是否被正确地传递到您正在执行"回声";。

您显示的错误表明从一开始就不存在包含数组的变量。如果SQL查询在php函数内,请检查是否返回了变量。示例

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

一旦您验证了这个数组的存在,我们现在可以看到将数据传递到JavaScript:的问题

这完全取决于结构如何,如果你在同一个文件中有PHP代码和JavaScript函数,你可以简单地在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函数的文件在另一个文件中:

您可以生成一个";全局";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:使用<?=相当于使用回波

在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);
    });
});