因此,为了创建具有动态HTML的页面,使用了以下Javscript代码:
function add0(Text, Value){
var x = document.getElementById("thingy");
var option = document.createElement("option");
option.text = Text;
option.value = Value;
x.add(option);}
function add(Text, Value){
var x = document.getElementById("stuff");
var option = document.createElement("option");
option.text = Text;
option.value = Value;
x.add(option);}
var c = 0;
var value =<?php echo json_encode($ToAndFromR); ?>;
var formula = <?php echo json_encode($FormulaR); ?>;
while(c < <?php echo $countr ?>){
add0(value[c], formula[c]);
add(value[c], formula[c]);
c++;
}
这是在从SQL查询中收到$ToAndFromR
和$Formula
之后完成的,其中代码为:
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//declare variables
$countr = null;
$sql = "SELECT * FROM `convert`";
$drippage = mysqli_query($conn, $sql);
//this counts the number of rows
if (mysqli_num_rows($drippage)) {
$countr = mysqli_num_rows($drippage);
}
$ToAndFrom = mysqli_query($conn, "SELECT ToAndFrom FROM `convert`");
$ToAndFromR = null;
$ToAndFromR = mysqli_fetch_all($ToAndFrom, MYSQLI_BOTH);
$FormulaR = null;
$Formula = mysqli_query($conn, "SELECT Formula FROM `convert`");
$FormulaR = mysqli_fetch_all($Formula, MYSQLI_BOTH);
但是,HTML在下拉列表中显示为[object Object],而不是使用常规PHP数组时的实际值。有办法解决这个问题吗?
答案 0 :(得分:2)
传递给JavaScript函数的每个Text
和Value
都将是一个具有两个属性的对象(因为您正在使用MYSQLI_BOTH
获取模式),例如
{"0": "some value", "ToAndFrom": "some value"}
您尝试将此内容分配给option
的{{1}}和text
媒体资源。
当你应该运行一个查询时,你似乎也在运行三个查询。
value
并在您的JavaScript中
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset('utf8');
$result = $conn->query('SELECT `ToAndFrom` AS `text`, `Formula` AS `value` FROM `convert`');
$options = $result->fetch_all(MYSQLI_ASSOC);
此外,您可以通过简单地传递var options = <?= json_encode($options) ?>;
for (var i = 0, l = options.length; i < l; i++) {
add0(options[i].text, options[i].value);
add(options[i].text, options[i].value);
}
ID来减少几乎相同的JavaScript函数add0
和add
,例如
<select>
与
function add(selectId, text, value) {
var x = document.getElementById(selectId);
// and so on
}
答案 1 :(得分:0)
我认为你应该编写一个单独的PHP脚本来回显JSON。
然后在javascript中,你应该调用这个PHP并解析JSON。一个简单的代码:
var xhr = new XMLHttpRequest();
xhr.open("GET", "sql.php", true);
var htmltext= '';
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var jsoninfo = xhr.responseText;
var obj = JSON.parse(jsoninfo);
// text = obj.attribute;
// add0(text,formula[c])
}
}
}