PhoneGap 应用程序 - JSONP 请求发生在浏览器中,但不在设备上(Android)
Posted
技术标签:
【中文标题】PhoneGap 应用程序 - JSONP 请求发生在浏览器中,但不在设备上(Android)【英文标题】:PhoneGap app - JSONP Request happening in browser, but not on device (Android) 【发布时间】:2013-01-17 20:33:06 【问题描述】:我正在尝试在我的 PhoneGap 应用程序中进行 JSONP 调用。它在我的桌面浏览器中运行良好,但在设备中却不行。我认为这可能是 jQuery Mobile 的问题,所以我什至尝试禁用它,但没有帮助。
安卓版本:3.0
这是我的代码:
<link rel="stylesheet" href="css/themes/default/jquery.mobile-1.1.0.css" />
<script src="js/jquery.js"></script>
<script src="js/jquery.mobile-1.1.0.js"></script>
<script src="cordova-2.1.0.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
function cancelclicked()
window.location.href="index.html";
function jsonp_call()
// The call request here
function parseRequest(response)
// Parse the response here
</script>
<div data-role="page" class="type-interior">
<div data-role="header" data-theme="b">
<h1>Login</h1>
</div>
<div data-role="content">
<div class="content-primary">
<div data-role="fieldcontain">
<label for="name">Username:</label>
<input type="text" id="uname" />
</div>
<div data-role="fieldcontain">
<label for="name">Password:</label>
<input type="password" name="name" id="pass" />
</div>
<div data-role="fieldcontain">
<label for="name" id="invalidlogin"></label>
</div>
<div class="ui-body ui-body-b">
<fieldset class="ui-grid-a">
<button type="submit" onclick="return jsonp_call()" data-theme="e" rel="external">Login</button>
<!--</form>-->
<button type="submit" onclick="cancelclicked()" data-theme="d">Cancel</button>
</fieldset>
</div>
</div>
</div>
我在这里缺少什么?它在浏览器上运行良好,所以我很确定 JSONP 代码是正确的。它在模拟器和设备上也失败了。
【问题讨论】:
【参考方案1】:对我来说,访问源设置已经设置好了。 但我还是遇到了问题。
原来是缺少几个 HTML 结束标记。 (在我的情况下关闭 A HREF 标签) 当我只更改此设置时,它又可以在 android 上运行。 Chome 自动修复了缺失的结束标签。
很头疼,因为我在浏览器中测试时没有遇到任何问题,我认为这与 jsonp 实现或安全/签名问题有关。
【讨论】:
我知道这是一个微不足道的问题,但 Chrome 通过自动添加缺少的结束标签对开发人员弊大于利。【参考方案2】:您是否将域名添加到 Cordova 配置文件中?它在 res/xml/config.xml 下
<access origin="bla.bla.domain.com" />
【讨论】:
是的,成功了。我之前没有包含它,但它工作正常。只有当我使用没有访问源的 JQM 时它才会失败。很奇怪,但确实如此。以上是关于PhoneGap 应用程序 - JSONP 请求发生在浏览器中,但不在设备上(Android)的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 在 Android 2.2.2 上的浏览器未获取 JSONP
带有 AngularJS 的 Windows Phone 8.1 上的 Phonegap 无法从我的 API 中检索 JSONP