0

こんにちは、PHP から Javascript に結果を返す必要があります。

これが私の PHP コードで、javascript で使用できるようにする必要があります。

$result = dbMySql::Exec('SELECT Latitude,Longitude FROM data');
while ($row = mysqli_fetch_assoc($result))
   $coordinates[] = 'new google.maps.LatLng(' . $row['Latitude'] . ', ' . $row['Longitude'] . ')';

配列 $coordinates を返し、次のように内破する必要がありますが、Javascript を使用します。

var flightPlanCoordinates = [<?php echo implode(',', $coordinates) ?>];

これが私がjavascriptで始めた方法です:

$.ajax({
        type: 'POST',
        url: 'history.php',
        data: {'query': url},
       });
var flightPlanCoordinates = [<?php echo implode(',', $coordinates) ?>];

そして、この変数に、返されたデータと、JOIN または PHP の implode と同じことを行うその他の関数を入力する必要があります。

編集:

これは私のajaxコードです:

$.ajax({
                  type: 'POST',
                  url: 'history.php',
                  data: {
                  'id_user':$('#select-choice-user').val(),
                  'reg_id':$('#select-choice-reg').val(),
                  'd_year1':$('#select-choice-year1').val(),
                  'd_month1':   $('#select-choice-month1').val(),
                  'd_day1':$('#select-choice-day1').val(),
                  'd_year2':$('#select-choice-year2').val(),
                  'd_month2':   $('#select-choice-month2').val(),
                  'd_day2':$('#select-choice-day2').val()
                  },
                  success: function(data)//callback to be executed when the response has been received
                        {

                            for (var i=0;i<data.length;i++)
                            {
                                flightPlanCoordinates[i] = new google.maps.LatLng(data[i].x,data[i].y);
                            }
                        }
                });

これらは、JSON 形式で返される値です。

[
    {
        "x": "46.5564266666667",
        "y": "15.6467166666667"
    },
    {
        "x": "46.5566583333333",
        "y": "15.6465533333333"
    },
    {
        "x": "46.5567416666667",
        "y": "15.6465566666667"
    },
    {
        "x": "46.556745",
        "y": "15.646555"
    },
    {
        "x": "46.5567366666667",
        "y": "15.6465766666667"
    },
    {
        "x": "46.55675",
        "y": "15.6465933333333"
    },
    {
        "x": "46.55677",
        "y": "15.6466116666667"
    },
    {
        "x": "46.5567766666667",
        "y": "15.6466183333333"
    },
    {
        "x": "46.5567783333333",
        "y": "15.64662"
    },
    {
        "x": "46.5567583333333",
        "y": "15.6466066666667"
    },
    {
        "x": "46.556725",
        "y": "15.6465966666667"
    },
    {
        "x": "46.5566983333333",
        "y": "15.6465983333333"
    }
]

JSONバリデーターをチェックインしましたが、フォーマットは有効です。だから私は何が間違っているのか分かりません。

あるべきように書かれていることを確認するためだけに、PHP コードを置きます。

$result = dbMySql::Exec($query);
while ($row = mysql_fetch_assoc($result))
{
    $coordinates[] = array('x' => $row['Latitude'], 'y' => $row['Longitude']);
}
echo json_encode($coordinates);//send as JSON object

コンソールに表示されるエラーの種類:

Uncaught Error: Invalid value for constructor parameter 0: undefined   
Uncaught TypeError: Cannot set property '0' of undefined
4

4 に答える 4

4

見たことがありますjson_encodeか?これで魔法がかかるはずです。

于 2012-10-18T13:01:32.103 に答える
1

わかりました、コメントを読むとvar flightPlanCoordinates、ajax 呼び出しの戻り値を割り当てる必要がある場合のようです。その場合:

var flightPlanCoordinates = [];
$.ajax({type: 'POST',
        url: 'history.php',
        data: {'query': url},
        success: function(data)//callback to be executed when the response has been received
        {
            for (var i=0;i<data.length;i++)
            {
                flightPlanCoordinates[i] = new google.maps.LatLng(data[i].x,data[i].y);
            }
        }
    });

そして、回避するevalには、次のようにデータを返すだけです。

while ($row = mysqli_fetch_assoc($result))
{
    $coordinates[] = array('x' => $row['Latitude'], 'y' => $row['Longitude']);
}
echo json_encode($coordinates);//send as JSON object

それはトリックを行う必要があります

于 2012-10-18T13:12:05.220 に答える
-1
var flightPlanCoordinates = <?php echo json_encode($coordinates); ?>
于 2012-10-18T13:09:38.213 に答える
-1
<script>  
  var coordinates = new Array();
    <?php
        foreach($coordinates as $key => $value) {
    ?>
        coordinates[<?php echo $key; ?>] = [<?php echo $value; ?>];
    <?php
         }
    ?>
</script>

これは配列をphpからjavascriptに渡します

于 2012-10-18T13:11:00.260 に答える