如何将ajax请求数据保存到不同的变量

时间:2015-12-22 11:22:12

标签: javascript php ajax

我试图将从ajax调用返回的数据存储到不同的变量中。

Ajax Call

$.ajax({
  url: 'fetch_lat_lng.php',
  type: 'GET',
  dataType: "html",    
  success: function(data) {
    //called when successful

    //lat = php lat variable
    //lng = php lng variable 

    myvar = data;
    console.log(lng);

    $('#ajaxphp-results').html(data);
  }
});

fetch_lat_lng.php

$query = "SELECT * FROM users WHERE user_id = 636 ";
$result = query($query);
confirmQuery($result);


while($row=mysqli_fetch_array($result)){

    $lat = $row['lat'];
    $lng = $row['lng'];

}

echo $lat. " ". $lng;

我想将php变量$ lat和$ lng保存到a​​jax调用中的javascript变量中。这可能吗?

期待您的回答,谢谢!

亲切的问候,

4 个答案:

答案 0 :(得分:3)

将服务器端代码更新为以下

<?php
$query = "SELECT * FROM users WHERE user_id = 636 ";
$result = query($query);
confirmQuery($result);


while($row=mysqli_fetch_array($result)){

    $lat = $row['lat'];
    $lng = $row['lng'];

}
// Encode the output data
echo json_encode(array('latitude'=>$lat, 'longitude' => $lng));
?>

将ajax呼叫代码更改为以下

<script type="text/javascript">
$.ajax({
  url: 'fetch_lat_lng.php',
  type: 'POST',
  dataType: 'json',
  success: function(data) {
    //called when successful
    latitude = data.latitude;
    longitude = data.longitude;
  }
});
</script>

如果需要返回更多的经度和纬度,请根据您的要求更新输出结构。

示例:

 <?php
// Decode the output data
echo json_encode(
    array(
        0 =>
        array(
            'latitude'=>12, 'longitude' => 34
        ),
        1 =>
        array(
            'latitude'=>56, 'longitude' => 78
        ),
    )
);
?>

我希望这会有所帮助。

答案 1 :(得分:0)

在PHP方面:

<?php

    // Do all the things.
    // PS. Do a LIMIT 1 in the SQL query.
    // PPS. Maybe IF () instead of WHILE ().

    $response = [
        'lat' => $lat,
        'lon' => $lon
    ];
    header("Content-type: application/json");
    echo json_encode($response);

在jQuery方面:

$.ajax({
    url: 'fetch_lat_lng.php',
    dataType: "json",
    success: function (data) {
        console.log(data.lat, data.lon);
    }
});

// PS. "type" in your example should be method.
// PPS. "method": "GET" is the default, so no need for that.
// PPPS. You can use $.get("fetch_lat_lng.php", function (data) {}) instead of $.ajax.

答案 2 :(得分:0)

json编码的形式从$result['lat'] = $lat; $result['lng'] = $lng; echo json_encode($result); 返回您的回复:

$.ajax({
  url: 'fetch_lat_lng.php',
  type: 'GET', 
  dataType: "json",     // change dataType as well.
  success: function(data) {
    //called when successful

    console.log(data);
    var lat = data.lat;
    var lng = data.lng;

    console.log(lat);
    console.log(lng);

    //$('#ajaxphp-results').html(data);
  }
});

在ajax请求中

json

请注意,您必须更改@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) 编码数据的数据类型。

答案 3 :(得分:0)

是的,有可能这样做。使用JSON作为数据类型,可以将数据保存在javascript变量中,如下所示:

$.ajax({
 url: 'fetch_lat_lng.php',
 type: 'POST',
 dataType: "json",    
 success: function(data) {
 var lat = data.lat;
 var lng = data.lng;
 //saved in javascript variable
  }
});

用fetch_lat_lng.php中的json格式编码,这样:

$query = "SELECT * FROM users WHERE user_id = 636 ";
$result = query($query);
confirmQuery($result);

$data = array();
        while ($row = mysqli_fetch_array($result))
        {
            $data = array(
            "lat" => $row['lat'],
            "lng" => $row['lng']
            );
            $data[] = $data;
        }
echo json_encode($data);

就是这样,希望它有所帮助。