我试图将从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保存到ajax调用中的javascript变量中。这可能吗?
期待您的回答,谢谢!
亲切的问候,
答案 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);
就是这样,希望它有所帮助。