【问题标题】:Eclipse + Phonegap + Sencha touch ==> call to webserver running locallyEclipse + Phonegap + Sencha touch ==> 调用本地运行的网络服务器
【发布时间】:2012-10-22 13:09:21
【问题描述】:

我已经在我的 Windows 电脑上安装了 xampp 和 mysql。我使用 sencha touch 1.x。 我有一个在本地运行的网站。它位于“htdocs/website”下。它运行完美;-)

我开发了一个移动应用程序(它位于“htdocs/mobile”下)。我首先使用谷歌浏览器测试了该应用程序。在应用程序中有一些对本地网络服务器的 ajax 调用(例如用户登录)。这完美地工作。我可以发送请求并收到响应。

我使用“Ext.util.JSONP.request”来调用webservices。

现在我安装了 eclipse、phonegap 和 ADT,在 eclipse 中创建了一个新的 android 项目。 我启动本地网络服务器并在 Eclipse 中将我的应用程序作为 android 应用程序运行。

我没有收到任何错误。 Android 模拟器启动并打开应用程序。但是当我调用我的网络服务器时,什么也没有发生。

怎么了?

谢谢


这是我对服务器的请求代码:

console.log("In checkLogin of logincontroller");

    Ext.util.JSONP.request({
        url: 'http://mywebsite:80/mobile/login.php',
        params: options.data,
        callbackKey: "callback",
        scope: this, 
        callback: function(response) {
            console.log("success");
            if (response.success == "true")
            {
                //save login locally on phone
                this.index(options);
            }
            else {
                Ext.Msg.alert(response.errors.reason, '');
                console.log("failure");
            }
        }
    });

点击手机上的登录按钮时,我看到消息“In checklogin of logincontroller”。

【问题讨论】:

  • 如果您使用 localhost 作为 Web 服务器的地址,则需要更改它。模拟器认为 localhost 是它自己,而不是它运行的计算机。
  • 我确实使用了 localhost。但我改变了它,所以现在我使用“mywebsite”而不是“localhost”。所以我有一个 Ext.util.JSONP.request 到“mywebsite/mobile/login.php”。但仍然没有任何反应。

标签: android ajax eclipse cordova sencha-touch


【解决方案1】:

您应该尝试使用 IP 地址 10.0.2.2 来访问您的本地 Web 服务器。问题是 127.0.0.1(或 localhost)代表您的模拟设备,而 10.0.2.2 代表主机环回接口(即使您切换开发机器也将始终有效)。

developer.android.com了解更多关于特殊网络地址的信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    相关资源
    最近更新 更多