我一直试图通过运行最新1.5.0 PhoneGap的Android PhoneGap应用程序发送一天以上的AJAX请求。我已经尝试了来自stand jQuery包(不是jQuery Mobile)的GET,POST,AJAX,getJSON请求。所有这些都在标准浏览器中运行,但App中没有任何工作。
这是我最新的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值永远不会被返回。我删除了移动设备检查功能,上面的所有设置都运行良好。
答案 0 :(得分:1)
您是否已将Internet权限添加到Android manifest.xml:
<uses-permission android:name="android.permission.INTERNET">
如果是这样,它是否在正确的位置(不在应用程序标记内)?
答案 1 :(得分:1)
super.init();
super.clearCache();
您错过了init
。尝试添加以上内容。