如何将多个变量从PHP传递到extenal js文件?

时间:2017-04-16 18:37:56

标签: javascript php html mysql ajax

我无法将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();
?>

4 个答案:

答案 0 :(得分:0)

在PHP中使用json_encode()输出数组的JSON字符串。然后,您可以在客户端输出结果以查看响应。它应该是一个javascript对象。

答案 1 :(得分:0)

你可以把你需要传递请求的值放到数组中,json对它进行编码并回显它。

您可能会发现以下主题非常有用。

Returning JSON from a PHP Script

希望这会有所帮助。 :)

答案 2 :(得分:0)

您的请求结果将@$x_1@$x_2作为一个字符串返回。您可以使用x_1和x_2

的键返回JSON对象

答案 3 :(得分:0)

我建议创建一个JSON响应以获取不同的变量&#39;:

$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(','));
    }
});