javascript - 如何从我的phonegap应用程序调用服务器API?

标签 javascript cordova

我正在努力理解一些我确信非常基本的东西。我到处寻找,找不到解决我的问题的方法。

我发现的最相关的 stackoverflow 问题是这个:How do I call remote API using Phonegap for Android?

那篇文章看起来很有希望,但对我来说仍然不起作用。我正在构建我的第一个 PhoneGap 应用程序并尝试使用 Grouped api。

我从概念上不理解如何从 PhoneGap 发送和接收数据。我正在本地构建所有内容,因此我认为这在技术上与 PhoneGap 无关。

这是我的 API 调用:

http://grouped.com/api?f=user_exists&email=ryan@ensomniac.com

应该返回

{"msg": true}

但是在本地测试时我得到的只是“Error 200”和空数据。我感觉像这个人:

http://www.youtube.com/watch?list=UU4_bwov47DseacR1-ttTdOg&feature=player_detailpage&v=GsqUZkmO-zk

我正在 Linux 上的 'localhost' 上测试 Firefox 10.0.1。我认为本地运行与 PhoneGap 尽可能相似,但可能是错误的。

这是我现在拥有的代码,我认为应该可以工作(但显然不行):

function makeRequest() {
    var request = new XMLHttpRequest();
    request.open("GET", "http://www.grouped.com/api?f=user_exists&email=ryan@ensomniac.com", true);
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            if (request.status == 200 || request.status == 0) {
                console.log(request);
            }
        }
    }
    request.send();
}
makeRequest();

我做错了什么?

感谢您一直以来的帮助。

最佳答案

问题是您正在 FireFox 中的文件协议(protocol)进行测试。 FireFox 阻止您的请求工作,因为它是 Cross-site XMLHttpRequest 。某些版本的 FireFox 将允许您enable cross site XHR's但我很确定这不适用于 10.0.1。

如果您可以修改服务器,使其 allows requests from your domain这将是一种解决方案。

如果您无权访问服务器,那么您应该改用 Chrome 进行开发。如果您像这样启动 Chrome:

chrome.exe --disable-web-security

您将能够执行跨站点 AJAX 请求。 Chrome 也是基于 webkit 的,因此其行为将更接近您在 Android、iOS 和 BB 上看到的情况,这些浏览器都部署了基于 webkit 的浏览器。

关于javascript - 如何从我的phonegap应用程序调用服务器API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694716/

相关文章:

javascript - JavaScript 中的本地文件支持检测 - Windows Phone 8 Bug

javascript - 在没有冗长的函数语法的情况下在 javascript 中传递 block

jquery - 如何从 javascript 设置 -webkit-overflow-scrolling 样式?

android - Android Studio 中的 Ionic Cordova(未找到已安装的构建工具)

java - 设备重启后启动 Phonegap 插件

javascript - 添加/删除影子 DOM 中定义的类

javascript - js文件是否会阻碍war文件的构建

Javascript - Nightmare.JS 无限滚动 Action

android - 如何为cordova android项目添加应用程序图标

Windows 上没有 Eclipse 的 Android 应用程序代码签名