Javascript 当使用android的一些js代码调用php文件时,js代码就是这样一个调用的输出
我正在制作这个安卓应用程序,有点陷入了一个问题。 问题是,在我的应用程序中,一个活动将用户的当前位置发送到数据库,并使用这个位置引用数据库中的另一个表,在该表中,我获取这些值,该表由其他用户的位置组成。 所以现在我想做的是使用用户当前位置并参考其他用户想要计算的位置,然后选择最近的用户,我已经做了一个.php文件。当在web浏览器上运行时,会显示正确的ans。但在应用程序中似乎不起作用。 请注意,php文件tat使此计算机使用javascript。 这是我在异步任务中调用的php文件,它查找最接近的用户。 php文件Javascript 当使用android的一些js代码调用php文件时,js代码就是这样一个调用的输出,javascript,php,android,android-asynctask,Javascript,Php,Android,Android Asynctask,我正在制作这个安卓应用程序,有点陷入了一个问题。 问题是,在我的应用程序中,一个活动将用户的当前位置发送到数据库,并使用这个位置引用数据库中的另一个表,在该表中,我获取这些值,该表由其他用户的位置组成。 所以现在我想做的是使用用户当前位置并参考其他用户想要计算的位置,然后选择最近的用户,我已经做了一个.php文件。当在web浏览器上运行时,会显示正确的ans。但在应用程序中似乎不起作用。 请注意,php文件tat使此计算机使用javascript。 这是我在异步任务中调用的php文件,它查找最接
<?php
$response = array();
include 'db_con.php';
// run query
$query = mysqli_query($con,"SELECT *FROM friend WHERE d_status='0'");
// look through query
if (!empty($query)) {
// check for empty result
$response["details"] = array();
while($row =mysqli_fetch_assoc($query)){
$details= array();
$details["Latitude"]= $row["d_latitude"];
$details["Longitude"]= $row["d_longitude"];
array_push($response["details"], $details);
}
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
mysqli_close($con);
$lat=15.493403;
$longi=73.820617;
?>
<!DOCTYPE html>
<html>
<body>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2 /jquery.min.js"></script>
<script type="text/javascript">
var latlon = new Array();
var map;
var lat=15.493403;//"<?php echo $lat; ?>";
var longi=73.820617;//"<?php echo $longi; ?>";
var geocoder;
var origin =new google.maps.LatLng(lat,longi);
function mapLoad(){
var data="<?php echo $response;?>";
var data_parsed = JSON.parse(data);
var resp = data_parsed['details'];
for (var i in resp) {
latlon[i]=(resp[i].Latitude+","+resp[i].Longitude);
//alert("latit:"+latlon[i]);
}
calculateDistances();
}
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
function calculateDistances() {
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins:[origin], //array of origins
destinations: latlon, //array of destinations
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, callback); //agettaxicoor
}
function callback(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
//we only have one origin so there should only be one row
var routes = response.rows[0];
//need to find the shortest
var lowest = Number.POSITIVE_INFINITY;
var tmp;
var shortestRouteIdx;
var resultText = "Possible Routes: <br/>";
for (var i = routes.elements.length - 1; i >= 0; i--) {
tmp = routes.elements[i].duration.value;
resultText += "Route " + latlon[i] + ": " + tmp + "<br/>";
if (tmp < lowest) {
lowest = tmp;
shortestRouteIdx = i;
}
}
//log the routes and duration.
$('#results').html(resultText);
//get the shortest route
var shortestRoute = latlon[shortestRouteIdx];
var res = JSON.stringify(shortestRoute .split(","));
//alert(res);
location.href="atestb.php?Result=" + res; //this where the result is set.
}
}
</script>
<body onload="mapLoad();"></body>
</body>
</html>
您不能通过直接从Android源代码调用来执行javascript。当你调用服务器时,它会返回一个内容流,就是这样!因为您的web服务返回javascript,所以android代码将js代码显示为字符串
您应该将js逻辑转换为php并返回计算结果,或者在应用程序中使用能够执行js并向您传递结果的webview。您可以咨询:
编辑:有一个库在后台创建webview并执行javascript(注意:我自己还没有测试这个库)
请问您为什么使用PHP?另外,我认为你不能在android上运行PHP。您需要安装apache+php,这就是为什么它可以在计算机上工作,而不是在android上。如果您想使用php文件,请将其放在服务器上,然后使用ajax从应用程序中请求它。(安卓应用程序中的IE代码没有任何意义)抱歉,没有提及,但此文件位于服务器上。