下面给出的代码使用本地主机上的 wamp 服务器工作正常。它正在调用一个连接到 MySql 数据库并返回数据的 php 文件。
但是我正在尝试使用 PhoneGap 构建一个移动应用程序。下面的代码在一个 HTML 文件中。我的问题是,一旦我将 html 文件上传到 phonegap 并生成 .apk 文件,我的 html 文件将如何使用 ajax 与服务器建立连接。因为下面的代码只是调用了 getbustime.php 文件,没有任何网络服务器参数。
我已经使用 HTML、jQueryMobile、Ajax 在 phonegap 中开发了我的应用程序,现在愿意上传帮助吗?
function getBusTime(){
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("resultLogBus").innerHTML=xmlhttp.responseText;
// $('#resultLogBus').html(xmlhttp.responseText).selectmenu( "refresh");
}
}
xmlhttp.open("GET","getbustime.php?direction="+direction+"&busnum="+busnum+"&dayofweek="+dayofweek+"&stopname="+stopname+"&starttime="+starttime+"&endtime="+endtime,true);
xmlhttp.send();
}//End of function getBusTime
</script>
最佳答案
基本上,您需要在 ajax 调用中设置 server/php 文件的完整路径,如下所示:
xmlhttp.open("GET","http://<YOUR_SERVER_NAME>/getbustime.php?direction="+direction+"&busnum="+busnum+"&dayofweek="+dayofweek+"&stopname="+stopname+"&starttime="+starttime+"&endtime="+endtime,true);
根据您的情况,您可能还需要做的其他几件事是:
在 phonegap config.xml 中设置这个标签:
<access origin="*" />
我在 Chrome 中进行所有 phonegap 开发,它强制执行跨源安全性。一旦您尝试针对服务器的真实地址(而不是本地主机)进行测试,Chrome 将阻止它,除非服务器设置为 CORS。在您的服务器上启用此功能以在 PHP 中进行测试的简单方法是:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type');
关于php - 如何使用 PhoneGap(Android 应用程序)实时连接到 Web 服务器上的 PHP 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22124308/