2017-04-16 6 views
1

PHPから(mysqlのfectchデータの後に)複数の変数をjsエクステンションファイルに渡すことができません。だからecho $x_1を使うと、htmlファイルの#watts_valueに渡って正常に表示できます。

しかし、私は変数$x_1#watts_value$x_2からkwh_valueに渡したいと思います。私はすでにこれをやろうとしていますが、それはすべての価値を#watts_valueに渡すだけです。

私はphpからjavascriptに変数を渡す方法についてはわかりません。私に提案するか、これを行う方法を教えてください。PHPからextenal jsファイルに複数の変数を渡すには?

これは、これは私のmain.js

$(document).ready(function(){ 
 
\t function read(){ 
 
\t \t $.post("get_db.php", 
 
\t \t function(data, status){ 
 
\t 
 
\t \t if(status == 'success'){ 
 
\t \t \t $('#watts_value').html(data); 
 
\t \t } 
 
\t \t else{ 
 
\t \t \t $('#info').html("Error!"); 
 
\t \t } 
 
\t \t }); 
 
\t }; 
 
\t read(); 
 
\t setInterval(read,1000); 
 
    });

である私のhtml

<div id="watts_value"></div> 
<div id="kwh_value"></div> 



です

これは出力への私の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(); 
?> 
+0

2つの別々のクエリを実行する代わりに、 'WHERE SensorId IN(1,2)'のように 'IN'節を調べる必要があります。 – tadman

+0

**警告**:エラー抑制 '@'演算子を使用すると、コードの問題が隠され、このようなデバッグの問題がさらに複雑になります。これは最後の手段であり、例外的な状況でのみ使用すべきです。 – tadman

答えて

0

ためのキーで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であるとして、これを認識します

$.post("get_db.php", 
    function(data, status){ 

    if(status === 'success'){ 
     $('#watts_value').text(data.WattsValue.join(',')); 
     $('#kwh_value').text(data.KwhValue.join(',')); 
    } 
}); 
+0

私の場合のこの仕事は、あなたの日を救った。どうもありがとうございます。:) – Nothingnez

+0

私はこれら2つの変数 '$ jsonObject ['WattsValue'] []'と '$ jsonObject ['KwhValue'] []'をハイチャートで使う方法を混乱させました。ハイチャートに2つのヴァースを入れましたが、うまくいかないのです。 – Nothingnez

0

PHPで利用json_encode()配列のJSON文字列です。次に、クライアント側で結果を出力して応答を確認することができます。それはjavascriptオブジェクトでなければなりません。

+0

ありがとうございました。それは私の新しいレッスンです。 :) – Nothingnez

0

あなたは配列にリクエストを渡すために必要な値を置くことができます。jsonエンコードしてエコーします。

次のスレッドが便利です。

Returning JSON from a PHP Script

は、この情報がお役に立てば幸いです。 :)

+0

これは私のケーススタディに適しています。ありがとうございました:) – Nothingnez

0

あなたのリクエストの結果は、@$x_1@$x_2を1つの文字列として返します。あなたは、私は別の「変数」をつかむためにJSONレスポンスを作成することをお勧めX_1とX_2

+0

はい、JSONは答えです、ありがとうございます。 :) 異なる変数を渡したい場合は、JSONを使用する必要があります。 – Nothingnez

関連する問題