我的文件扩展名为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对象中解析这个数组时 - 我们看到奇怪的错误。
问题:
答案 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代码。