如何从我的 Phonegap 应用程序调用服务器 api
How do I call a server api from my phonegap app?
我正在努力理解一些我确信非常基本的东西。我到处寻找,但找不到解决问题的方法。
我发现的最相关的stackoverflow问题是:如何使用Phonegap for Android调用远程API?
那篇帖子看起来很有希望,但仍然对我不起作用。我正在构建我的第一个PhoneGap应用程序,并尝试使用分组API。
我不明白如何从PhoneGap发送和接收数据。我正在本地构建所有内容,所以我想这在技术上与PhoneGap无关。
这是我的 api 调用:
http://grouped.com/api?f=user_exists&email=ryan@ensomniac.com
应该返回
{"msg": true}
但是在本地测试时我得到的只是带有空数据的"错误 200"。我觉得像这个人:
http://www.youtube.com/watch?list=UU4_bwov47DseacR1-ttTdOg&feature=player_detailpage&v=GsqUZkmO-zk
我正在从"本地主机"在 Linux 上的 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 中的文件协议进行测试。FireFox 阻止您的请求工作,因为它是一个跨站点 XMLHttpRequest。某些版本的FireFox将允许您启用跨站点XHR,但我很确定这不适用于10.0.1。
如果可以修改服务器,使其允许来自域的请求,那将是一种解决方案。
如果您无权访问服务器,则应切换到使用 Chrome 进行开发。如果您启动 Chrome 时如下所示:
chrome.exe --disable-web-security
您将能够执行跨站点 AJAX 请求。同样,Chrome是基于webkit的,所以行为将更接近你在Android,iOS和BB上看到的内容,它们都部署了基于webkit的浏览器。
我刚刚跑了
http://www.grouped.com/api?f=user_exists&email=ryan@ensomniac.com
通过我的网络浏览器并获得了正确的 JSON 响应。您的本地主机一定在与现实世界的万维网通信时遇到问题,或者您的代码中的某些内容阻止了响应。不过,我并没有真正查看代码来检查错误。
您可能遇到了跨域限制。您在哪个平台上开发?在iOS上,您可能需要在Cordova.plist
中添加类似的东西:
<key>ExternalHosts</key>
<array>
<key>grouped</key>
<string>www.grouped.com</string>
</array>
对于Android来说,它有问题,你最好的选择是使用jQuery和JSONP。
您应该使用 request.responseText
从服务器获取响应正文。
- 在Android中从signalR调用服务器端功能
- 从javascript调用服务器端的下拉列表onchange函数
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- 如何在 asp.net 中从 javascript 调用服务器端代码
- 何时调用服务器 onClick vs OnClientClick
- typeaheadjs:如何在不使用缓存数据的情况下调用服务器
- 如何执行“;“同步”;javascript调用服务器而不锁定浏览器
- 如何使用javascript代码调用服务器端函数;标记函数“>
- Javascript:在调用服务器时防止浏览器冻结
- 如何对调用服务器的 JavaScript 文件进行外部接口调用以获取信息
- 如何在调用服务器请求时删除错误
- 如何在 javascript 函数中调用服务器端函数
- 在侧边栏 GAS 中调用服务器端脚本
- 使用 Backbone LocalStorage 并仍调用服务器
- 从 js 调用服务器端 vb 代码(asp classic)
- 通过互联网从浏览器调用服务器端javascript
- 如何从我的 Phonegap 应用程序调用服务器 api
- 想要从Android应用程序调用服务器端javascript
- 调用服务器端从 JavaScript 继承了 C# Web 方法
- 如何先调用客户端脚本函数,然后再调用服务器端按钮单击事件