0

我正在编写一个 Android 应用程序,并且已经有一个用 HTML 和 PHP 编写的工作程序。使用这两者,他们在 html 页面上通过用户自定义查找联系 API,然后将其发送到 PHP 页面,通过自定义搜索联系 API,获得结果,然后 php 再次输出到 html 页面。

我知道 PHP 不能在 Android 上运行,但我打算使用 PhoneGap。使用 PhoneGap,我可以运行 JavaScript、HTML 和 CSS。我还读过Android无法理解PHP的解决方案是连接到可以为我运行php的服务器(我的计算机),然后以手机可以理解的方式输出。

我的计划是使用 PhoneGap 可以理解的 JavaScript 连接到我的计算机,并让它运行 PHP 并以 HTML 格式输出页面,这又是 PhoneGap 可以理解的。

如果这很荒谬,请告诉我...否则,如果有人可以在 JavaScript 函数中将我推向正确的方向,让我能够验证自己、连接到我的计算机并告诉它我,我将不胜感激我想使用某个 PHP 文件。

4

4 回答 4

4

在为 Android 和 iOS 开发应用程序时,我们遇到了完全相同的问题。就像奥斯汀告诉你的那样,你必须使用 AJAX。

W3schools - AJAX

但是,我建议您不要使用 jquery,如果它只需要一些简单的事情,因为它必须加载很大的脚本,所以它相当重。因此,如果您可以减少代码量,请通过学习真正的 JavaScript 而不是 jQuery 来做到这一点。

此外,我们所做的是编写自己的 APIRequest.js 对象。当像这样调用这个对象时:

var result = new APIRequest('functionname', {param1:value, param2:value})

这是连接到您的 php 的一种相当简单的方法,它将在您在国外某处的服务器或您的 pc 上运行。如您所见,我们插入了一个函数名,我们将 API 开发为一个相当简单的 OOP php 事物,它允许我们将 functionname.php 放在某个文件夹中,它将由 de 脚本读取,然后选择该函数。数据库连接和类似的东西将排列在 api 的索引中。使用这种方法,您可以为每个独特的处理在服务器端创建特殊功能。

我告诉你这是因为你正在使用 JavaScript。我想让你明白这是不安全的!它与您计算机上的 JavaScript 应用程序一样安全。黑客可以将 .apk 下载到他的计算机上,在他的电脑上的模拟器中运行它,然后通过他的控制台进行编辑。因此,他可以更改您的整个代码(至少是 JavaScript 部分)。因此,请确保您尝试使用钥匙之类的东西尽可能安全。另外,尽量在你的服务器上做尽可能多的逻辑,这样逻辑就不能改变。只有 API 的输入参数。

我希望这对你有帮助!

于 2012-07-10T22:17:46.370 回答
2

在这里你需要使用 AJAX。jQuery 有一个很棒的包装函数$.ajax,它使大部分过程变得非常简单明了。

AJAX 将向任何文件(在您的情况下为 php 文件)发送异步请求,并使用它接收到的数据触发回调函数。(同步也是可能的,但不推荐,因为它会使您的应用程序挂起,直到请求完成。更多关于为什么不推荐这样做

关于此处涵盖的主题的一些不错的读物:

于 2012-07-10T22:06:47.887 回答
1

您要使用的基本技术是 AJAX,这是从 Javascript 通过 HTTP 进行服务器调用的术语。您可以使用 XML(AJAX 中的 X)或其他编码(例如 JSON)将数据传入和传出服务器。

您需要服务器上的专用 PHP 文件来理解您在 AJAX 帖子中发送的数据,而不是生成 HTML,而是生成您的 Javascript 将使用的 XML/其他格式。

您最好的选择可能是创建一个浏览器应用程序,通过 AJAX 与您的服务器通信,并在工作时将其移植到 PhoneGap。

于 2012-07-10T22:14:08.310 回答
1

这很容易。只需向 PHP 页面发出 GET 请求并解析结果。创建一个函数以使其更容易:

function httpGet(theUrl){
    var xmlHttp = null;
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, false );
    xmlHttp.send( null );
    return xmlHttp.responseText;
}

然后,您可以调用它并获取生成的 HTML 代码。

var url = 'http://yourpage/index.php?a=something&b=otherthing';
var page = httpGet(url);
于 2012-07-10T22:22:56.930 回答