Php HTML未从SQLdatabase获取数据
我正在为我的项目使用Phonegap,它查找当前位置,将纬度和经度传递给php脚本,php搜索sql数据库,如果它在当前位置附近有任何地点/机构。我使用xampp获得输出,它会在html屏幕上返回学院名称。但是当我使用apk文件并在手机中运行相同的代码时,我只得到了当前的lat/lon坐标,但没有得到机构名称。 这是我的geolocation.html代码Php HTML未从SQLdatabase获取数据,php,android,mysql,cordova,Php,Android,Mysql,Cordova,我正在为我的项目使用Phonegap,它查找当前位置,将纬度和经度传递给php脚本,php搜索sql数据库,如果它在当前位置附近有任何地点/机构。我使用xampp获得输出,它会在html屏幕上返回学院名称。但是当我使用apk文件并在手机中运行相同的代码时,我只得到了当前的lat/lon坐标,但没有得到机构名称。 这是我的geolocation.html代码 <!DOCTYPE html> <html> <head> <title>Devic
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
var lat;
var lon;
// onSuccess Geolocation
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
lat= position.coords.latitude;
lon= position.coords.longitude;
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("t01").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://geolocation.webatu.com/Radius.php?lat="+lat+"&lon="+lon,true)
xmlhttp.send();
}
// onError Callback receives a PositionError object
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
<div id="main">
<div id="t01"></div>
</div>
</body>
</html>
设备属性示例
//等待加载设备API库
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
函数ondevicerady(){
navigator.geolocation.getCurrentPosition(onSuccess,onError);
}
var lat;
瓦隆;
//成功地理定位
成功时的功能(位置){
var element=document.getElementById('geolocation');
element.innerHTML='Latitude:'+position.coords.Latitude+'
'+
'经度:'+position.coords.Longitude+'
'+
'高度:'+position.coords.altime+'
'+
'精度:'+position.coords.accurity+'
'+
'高度精度:'+position.coords.altitudeAccuracy+'
'+
'标题:'+position.coords.Heading+'
'+
'速度:'+position.coords.Speed+'
'+
'时间戳:'+position.Timestamp+'
';
纬度=位置坐标纬度;
lon=位置坐标经度;
var-xmlhttp;
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“t01”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”http://geolocation.webatu.com/Radius.php?lat=“+lat+”&lon=“+lon,真)
xmlhttp.send();
}
//OneError回调接收PositionError对象
函数onError(错误){
警报('code:'+error.code+'\n'+
'消息:'+error.message+'\n');
}
查找地理位置
这是radius.php代码。上传至000webhost.com
<?php
$mysql_host = "****";
$mysql_database = "****";
$mysql_user = "****";
$mysql_password = "****";
$con=mysqli_connect($mysql_host,$mysql_user,$mysql_password,$mysql_database);
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$rad = 7.442; // radius of bounding circle in kilometers
$R = 6371; // earth's mean radius, km
$lat = $_GET['lat'];
$lon = $_GET['lon'];
$sql = mysqli_query($con,"SELECT ID, ClassName,City, latitude, longitude, ( 6371 * acos( cos( radians('$lat') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('$lon') ) + sin( radians('$lat') ) * sin( radians( latitude ) ) ) ) AS distance FROM geodata HAVING distance < '$rad' ORDER BY distance LIMIT 0 , 20") or die('Error: ' . mysqli_error($con));
while($row = mysqli_fetch_array($sql)){
echo $row['ID'] . " " . $row['ClassName'];
echo "<br>";
}
mysqli_close($con);
?>
首先-为什么要费心编写与IE6兼容的XHR代码?你不必担心移动设备上的IE6。也就是说,您是否修改了config.xml中的标记?此处的详细信息:PhoneGap不能包含PHP包。您可以使用其他方法与数据库交互,也可以使用javascript将Ajax调用中的数据传递到处理响应的PHP页面。(这只是一个例子)
但要回答您的问题,您不能将PHP打包到phonegap中。我复制粘贴了该代码,因为它太懒了,以至于删除了IE^兼容的代码:p。你也可以告诉我,我在access origin中要写哪个链接?与您的链接中给出的相同?我是个新手。即时回复太多了@Raymond Camden。我没有修改我的config.xml,现在一切都正常了:)。对于遇到此问题的其他人,我必须在config.xml中添加下面的行,我也这样做了。我没有在phonegap中包含php。php代码上传到000webhost中。我使用了ajax的get方法与php进行交互。答复如下:)