PhoneGap 1.5.0 Android科尔多瓦AJAX JSON
问题描述:
我一直试图通过运行最新的1.5.0 PhoneGap的Android PhoneGap应用程序发送一天的AJAX请求。我已经尝试了从站jQuery包(不是jQuery Mobile)的GET,POST,AJAX,getJSON请求。所有这些都在标准的浏览器中运行,但是应用程序没有任何功能。PhoneGap 1.5.0 Android科尔多瓦AJAX JSON
这是我最新的jQuery Ajax代码
$.get(
'http://www.fakedomainname.com/ajax/user_login.php',
$('#emailLoginForm').serialize(),
function(json) {
//console.log(json);
alert(json.status);
},
'json'
);
这是我的PHP代码
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$output['status'] = 99; //new user
echo json_encode($output);
我已经加入clearCache我的AndroidManifest.xml
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.clearCache();
super.loadUrl("file:///android_asset/www/index.html");
}
我已经加入这个/res/xml/cordova.xml
<access origin=".*"/>
我思念还有什么?我无法让GET jQuery请求成功提醒任何事情?我已确保缓存被清除。我已将我的php文件头和我的cordova.xml文件中的跨域问题列入了白名单。我迷路了,有没有人用新的PhoneGap 1.5.0成功创建了AJAX呼叫?
错误是我的错。我碰到的URL还包含一个函数,用于检查用户代理是否为移动设备。如果是这样,它会将呼叫重定向到我请求的域/站点的移动友好版本。因此我的json值永远不会被返回。我删除了移动设备检查功能,并且上述所有设置都工作得很好。
答
你有没有添加Internet权限到你的Android的manifest.xml:
<uses-permission android:name="android.permission.INTERNET">
如果是这样,是不是在正确的地方(不应用标签内)?
答
super.init();
super.clearCache();
您错过了init
。尝试添加上面的内容。
不幸的是我在我的AdroidManifest.xml中已经有了。我希望那是答案。 – bbullis 2012-03-13 00:32:40
如何尝试向jQuery AJAX调用添加错误回调?这可能会给你更多关于失败的细节。 – elevine 2012-03-13 00:35:06
我刚刚更新了我的jQuery到1.7以启用GET ajax请求的错误功能。返回的错误消息是“解析JSON请求失败”。当我在一个普通的浏览器中测试这件事情时,情况非常好,但是通过PhoneGap App失败了吗?我的PHP代码在上面。 – bbullis 2012-03-13 00:51:17