将数组从php传递给js

时间:2018-04-15 19:49:45

标签: javascript php json file

我的文件扩展名为php。在这里,我从数据库中读取信息。我需要将这些数据(关联数组)传递给js,js也包含在这个php文件中。

<?php
    require('../db.php');

    function var_dump1($arr) {
        echo '<pre>';
        var_dump($arr);
        echo '</pre>';
    }

    // load data from Database
    $query = R::getAll("SELECT * from questions");
    var_dump1($query);

?>

<script>
const arr = JSON.parse( '<?php echo json_encode($query); ?>' );
console.log(arr);

</script>   

输出:

  

var_dump1($查询);

array(5) {
  [0]=>
  array(7) {
    ["id"]=>
    string(1) "1"
    ["question"]=>
    string(143) "The ______________ of a table is used to modify the design of a table, like modifying the name of a field or changing the data type of a field."
    ["answer1"]=>
    string(14) "Datasheet View"
    ["answer2"]=>
    string(11) "Desisn View"
    ["answer3"]=>
    string(10) "Table View"
    ["answer4"]=>
    string(11) "Wizard View"
    ["true_answer"]=>
    string(1) "1"
  }
  [1]=>
  array(7) {
    ["id"]=>
    string(1) "2"
    ["question"]=>
    string(83) "You can select multiple fields of a table in design view by using the ________ key."
    ["answer1"]=>
    string(3) "Alt"
    ["answer2"]=>
    string(8) "Spacebar"
    ["answer3"]=>
    string(5) "Shift"
    ["answer4"]=>
    string(4) "Ctrl"
    ["true_answer"]=>
    string(1) "3"
  }
...
  

的console.log(ARR);

Uncaught SyntaxError: missing ) after argument list

结论: 在PHP的一部分都很好。但是当我们尝试在js part中的js对象中解析这个数组时 - 我们看到奇怪的错误。

问题:

  1. 如何从php加载数据(例如,关联数组,在我的情况下)。当php和js在同一个扩展文件(php)中时。
    1. 如何从php加载数据(例如,关联数组,在我的情况下)。当php和js在不同的文件中时。例如,我们有1个扩展文件php,我们实现了逻辑(在我的例子中使用DB)。我们需要将此数据导入扩展文件js。

3 个答案:

答案 0 :(得分:1)

1)您需要做的就是:

<script>
var arr = <?php echo json_encode($query);?>; // <-- no quotes, no parsify
console.log(arr);
</script>

JSON = JavaScript Object Notation ...它已经采用格式分配给在javascript中使用的变量。

虽然将它分配给'const'可能不是一个好主意,因为它是一个对象,但它只是我如何阅读它们,并且仍然完全可以:More Info

2)如果你从js(ala ajax)调用一个php文件,那么你可以从php返回中返回原始JSON,并且取决于你如何进行ajax调用(以及使用什么库,比如jquery)。 ..你可能需要也可能不需要JSON.parse(returnData)。没有足够的信息提供你想要的方式,给出一个可靠的答案。

答案 1 :(得分:1)

您应该了解JSON。 这是一种语法,可以使用包含JS的任何语言进行解析。

使用PHP将您的数组回显到您的JacaScript代码,如下所示:

<script>
var myData = <?php echo json_encode($array);?>;
console.log(myData);
</script>

答案 2 :(得分:1)

一般来说,你的php代码将呈现为一个html页面。在此页面中,您可以根据需要构建数据。示例(在您的php代码中):

// as a js - variable: 
<script type="text/javascript">
<?php
var questions = <?php echo json_encode($query);
?>
alert(questions); // Output whatever is in the questions-variable
</script>

问题将是您可以达到的全局js变量 来自另一个js.file,或来自嵌入在html文件中的js。

// As data in your html: 
<input type="hidden" id="id_questions" name="questions" 
value="<?php echo htmlspecialchars(json_encode($query)); ?>"
/>
// Then fetch this data using js-code, eg in a different js-file: 
alert(document.getElementById('id_questions').value());

这也可以通过外部js文件或嵌入html输出形式的js文件到达你的php代码。