2017-04-18 13 views
-1

私は自分自身の最初のWebアプリケーションをプログラミングしようとしています。サーバーとクライアント間のデータトラヒックは、AJAXを使用して確立する必要があります。まず、私はこれでクライアント側からサーバ側にユーザ​​入力(HTML形式)を転送しようとしたJS-スニペット:PHP配列をJavascriptでAJAXを使用して

$("#submit").on("click", function(e) { 
    e.preventDefault(); 

    $.ajax({    
     url : "ajax.php", 
     type : "POST", 
     data : $("#nodes").serialize(), 
     dataType: "text", 
     cache : false, 
     success: function(data) { 
      console.log(data); 
      $("#ajaxrequest").html(data); 
     }, 
     error: function(xhr, desc, err) { 
      console.log(xhr); 
      console.log("Details: " + desc + "\nERROR: "+ err); 
     } 
    }); 
}); 

それは働いていた...しかし、今、私は(PHP-三つの異なるデータをオーバーハンドたいです私のサーバーからクライアント側への)アレイ:私はdata: $("#nodes").serialize(),がすべて転送さのデータが含まれていregonizedまで

<?php 

echo json_encode($currentdata); 
echo json_encode($maxmindata); 
echo json_encode($chartdata); 

私は、配列はにconsole.logに示されていることを不思議に思いました。確かに私はJSファイル内の異なる変数で3つの配列をすべて抽出する必要があります。

私は、これは、コンソールの出力である...それは仕事をdidntの

を当然の

success: function(data) { 
      console.log(data); 
      current = data.currentdata; 
} 

のようなものを試してみました:

> {"max":{"temperature":"21.14","humidity":"39.96","pressure":"1022.2"},"min":{"temperature":"21.08","humidity":"38.72","pressure":"1022.0"}}{"current":{"ID":"755","temperature":"21.43","humidity":"40.09","pressure":"1022.8","voltage":"3.337","datetime":"2017-04-18 
> 20:46:31"}}[{"ID":"570","nodeId":"Node1","humidity":"38.83","temperature":"21.08","pressure":"1022.2","voltage":"3.323","datetime":"2017-04-18 
> 20:00:02"},{"ID":"571","nodeId":"Node1","humidity":"38.72","temperature":"21.08","pressure":"1022.1","voltage":"3.321","datetime":"2017-04-18 
> 20:00:17"},{"ID":"572","nodeId":"Node1","humidity":"38.84","temperature":"21.1","pressure":"1022.1","voltage":"3.321","datetime":"2017-04-18 
> 20:00:32"}, 

あなたは私が欲しいものを得るいけない場合様々なPHP配列を異なるJS変数に割り当てるにはどうすればよいですか?別の$ .ajaxをプログラムする必要がありますか?

+3

は、配列の配列を作成します。 –

+0

まあ、このコメントは役に立たなかった。 –

+0

3つの配列オブジェクトを1つずつ送信しています。例:あなたのコンソールには '..}} [{..'。あなたの3つの配列を含む新しい配列を作成し、これを返します。 – Arthur

答えて

1

さて、もしコメントが役に立たなかったら、ここに答えがあります。

すべての値を持つ配列を作成します。

<?php 
$result_array = array(
    'current_data' => $currentdata, 
    'max_min_data' => $maxmindata, 
    'chart_data' => $chartdata, 
); 

echo json_encode($result_array); 

はまた、あなたのJSを変更します。

$.ajax({    
    url : "ajax.php", 
    type : "POST", 
    data : $("#nodes").serialize(), 
    // set dataType as `json`, this will create json object from response automatically 
    dataType: "json", 
    cache : false, 
    success: function(data) { 
     console.log(data); 
     console.log(data.current_data); // key is the same as in php array 
     //$("#ajaxrequest").html(data); 
    }, 
    error: function(xhr, desc, err) { 
     console.log(xhr); 
     console.log("Details: " + desc + "\nERROR: "+ err); 
    } 
}); 
+0

ありがとうございます! @AndreiGheorghiu私はJSとPHPを2週間学んでいます。私はこの問題でほぼ1日を過ごしていますので、私の未知のことを私に責めないでください! –

+0

Ok、@ NiclasResse。私はそれを責めます。冗談はさておき、誰かに何をすべきかを伝えると、「これは役に立たない」と返信しないでください。あなたができることは、感謝と(再)検索です。 –

+0

うん、@AndreiGheorghiu私はあなたに同意するが、いくつかのばかげた問題のために多くの時間を費やし、解決策が見当たらない場合は、stackoverflowで質問することが許されるべきである。 –

関連する問題