[英]How to pass multiple variable from PHP to extenal js file?
我無法將PHP中的多個變量(從mysql的fectch數據之后)傳遞給js extenal文件。 因此,如果我使用echo $x_1
它可以傳遞給html文件中的#watts_value
並正常顯示。
但我想將變量$x_1
傳遞給#watts_value
,將$x_2
傳遞給kwh_value
。 我已經嘗試這樣做,但它只是將所有值傳遞給#watts_value
。
我不知道如何將變量從php傳遞給javascript。 請建議我或告訴我如何做到這一點。
這是我的HTML
<div id="watts_value"></div>
<div id="kwh_value"></div>
這是我的main.js
$(document).ready(function (){ function read(){ $.post("get_db.php", function(data, status){ if(status == 'success'){ $('#watts_value').html(data); } else{ $('#info').html("Error!"); } }); }; read(); setInterval(read,1000); });
這是我的php文件
<?php
$servername="localhost";
$username="root";
$password="";
$dbname="rt_db";
$tbname="rt_data";
$conn=new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("Connection failed: ".$conn->connect_error);
}
$sql_1="SELECT * FROM $tbname WHERE SensorId ='1'";
$sql_2="SELECT * FROM $tbname WHERE SensorId ='2'";
$result_1=$conn->query($sql_1);
$result_2=$conn->query($sql_2);
if($result_1->num_rows>0){
while($row=$result_1->fetch_assoc()){
$x_1=$row['SensorData'];
echo $x_1;
}
}
if($result_2->num_rows>0){
while($row=$result_2->fetch_assoc()){
$x_2=$row['SensorData'];
echo $x_2;
}
}
else {
echo "fail";
}
$conn->close();
?>
在PHP中使用json_encode()輸出數組的JSON字符串。 然后,您可以在客戶端輸出結果以查看響應。 它應該是一個javascript對象。
您的請求結果將@$x_1
和@$x_2
作為一個字符串返回。 您可以使用x_1和x_2的鍵返回JSON對象
我建議創建一個JSON響應來獲取不同的'變量':
$jsonObject = ['WattsValue' => [], 'KwhValue' => []];
while($row = $result_1->fetch_assoc()){
$jsonObject['WattsValue'][] = $row['SensorData'];
}
while($row = $result_2->fetch_assoc()){
$jsonObject['KwhValue'][] = $row['SensorData'];
}
$conn->close();
header('Content-Type: application/json');
echo json_encode($jsonObject);
http_response_code(200);
exit;
使用jQuery時,它會將其識別為JSON,並且能夠直接使用JSON對象:
$.post("get_db.php",
function(data, status){
if(status === 'success'){
$('#watts_value').text(data.WattsValue.join(','));
$('#kwh_value').text(data.KwhValue.join(','));
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.