ボタンが付いたHTMLページがあります。ボタンをクリックすると、別のjavascriptファイルがPHPファイルにGETリクエストを送信し、JSONオブジェクトが返されます。私のPHPはJSON形式のテキストファイルを読み込み、それをJSONObjectに変換してjavascipt用にエコーします。私は前にいくつかのコードが動作していましたが、同じファイル内にすべてを持つ代わりにAjaxに変更して以来、これ以上はやり尽くさないようです。これは私のコードです:PHPでJSON形式のテキストファイルを書式設定する
readLog.php
<?php
class test{
function clean($string){
return json_decode(rtrim(trim($string),','),true);
}
function getLog(){
header('Content-Type: application/json');
$logLines = file('../../../home/shares/flower_hum/humid.log');
$entries = array_map("clean",$logLines);
$finalOutput = ['log' => $entries];
echo json_encode($logLines);
}
}
?>
マイhumid.logファイルは次のようになります。私は私のボタンを押すと
{"date":"26/09/2016", "time":"22:40:46","temp":"16.0", "humidity":"71.0" }
{"date":"26/09/2016", "time":"23:10:47","temp":"16.0", "humidity":"71.0" }
は今、これは私が得る応答でありますウェブブラウザでコンソールを確認してください:
レスポンス:
["{\"date\":\"26\/09\/2016\", \"time\":\"22:40:46\",\"temp\":\"16.0\", \"humidity\":\"71.0\" }{\"date\":\"26\/09\/2016\", \"time\":\"23:10:47\",\"temp\":\"16.0\", \"humidity\":\"71.0\" }\n"]
JSON:
"{"date":"26/09/2016", "time":"22:40:46","temp":"16.0", "humidity":"71.0" }{"date":"26/09/2016", "time":"23:10:47","temp":"16.0", "humidity":"71.0" }\n"
明らかに何かが、フォーマットが間違っているが、私は何を知りません。私が言ったように、私は同じファイルで自分のPHPとHTMLを持っていたときにこのコードは正常に動作しました。
EDIT:
は、私はまた、このようなものでJSONをフォーマットしようとしたが、それは単にブラケットを出力します。
function getLog(){
$text = file('../../../home/shares/flower_hum/humid.log');
$textRemoved ="["; //Add opening bracket.
$textRemoved .= substr($text, 0, strlen($text)-1); (Remove last comma)
$textRemoved .="]";//Add closing bracket
$json = json_encode($textRemoved);
echo $json;
}
をあなたにもAJAX JSが含まれているあなたのHTMLを投稿することができますか? – Ma3x
すでにJSONである 'humid.log'を' json_encode() 'していて、それを印刷しているようです(既にエンコードされているデータをエンコードしています)。上記の「humid.log」の内容は有効なJSONではないことを指摘しておきますが、オブジェクトの配列であれば、カンマで区切り、括弧で囲んでください( '[{obj_1}、{obj_2}]')。 –
私はこの問題の一部が、 '$ entries'や' $ finalOutput'の代わりに '$ logLines'をエンコードしていると思います。 – Ma3x