【问题标题】:How to pass multiple variable from PHP to extenal js file?如何将多个变量从 PHP 传递到外部 js 文件?
【发布时间】:2017-04-17 02:54:49
【问题描述】:

我无法将多个变量从 PHP(从 mysql 获取数据后)传递到 js 外部文件。所以如果我使用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();
?>

【问题讨论】:

  • 您应该查找IN 子句,就像在WHERE SensorId IN (1,2) 中一样,而不是运行两个单独的查询。
  • 警告:使用抑制错误的 @ 运算符会掩盖代码中的问题,并使此类调试问题变得更加复杂。这是万不得已的工具,只能在特殊情况下使用。

标签: javascript php html mysql ajax


【解决方案1】:

我建议创建一个 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(','));
    }
});

【讨论】:

  • 这项工作适合我的情况,你拯救了我的一天。太感谢了。 :)
  • 我很困惑如何在 highchart 中使用这两个变量 $jsonObject['WattsValue'][]$jsonObject['KwhValue'][]。我将这 2 个变量放在我的 highchart 中,但它无法工作。
【解决方案2】:

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

【讨论】:

  • 感谢您的建议。这是我的新课。 :)
【解决方案3】:

您可以将通过请求传递给数组所需的值,对其进行 json 编码并回显它。

您可能会发现以下线程很有用。

Returning JSON from a PHP Script

希望这会有所帮助。 :)

【讨论】:

    【解决方案4】:

    您的请求结果将@$x_1@$x_2 作为一个字符串返回。您可以返回带有 x_1 和 x_2 键的 JSON 对象

    【讨论】:

    • 是的,JSON 就是答案,感谢您的帮助。 :) 我会记住,如果要传递不同的变量,我们必须使用 JSON。
    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多