我正在尝试在PhoneGap应用程序中进行JSONP调用。它在我的桌面浏览器中工作正常,但不在设备中。我认为它可能是jQuery Mobile的一个问题,所以我甚至尝试禁用它,但没有帮助。
Android版: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代码是正确的。它在模拟器和设备上都失败了。
答案 0 :(得分:2)
您是否将域名添加到Cordova配置文件中?它位于res / xml / config.xml
下<access origin="bla.bla.domain.com" />
答案 1 :(得分:1)
对我来说,已经设置了访问源设置。 但我仍然遇到了问题。
事实证明是关闭HTML标签的几个缺失。 (在我的案例中关闭A HREF标签) 当我只更改它时,它在Android上再次运行。 Chome自动修复了丢失的结束标签。
非常头疼,因为在我的webbrowser测试过程中我没有遇到任何问题,我认为这与jsonp实现或安全/签名问题有关。