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"> 

如果是这样,是不是在正确的地方(应用标签内)?

+0

不幸的是我在我的AdroidManifest.xml中已经有了。我希望那是答案。 – bbullis 2012-03-13 00:32:40

+0

如何尝试向jQuery AJAX调用添加错误回调?这可能会给你更多关于失败的细节。 – elevine 2012-03-13 00:35:06

+0

我刚刚更新了我的jQuery到1.7以启用GET ajax请求的错误功能。返回的错误消息是“解析JSON请求失败”。当我在一个普通的浏览器中测试这件事情时,情况非常好,但是通过PhoneGap App失败了吗?我的PHP代码在上面。 – bbullis 2012-03-13 00:51:17

super.init(); 
super.clearCache(); 

您错过了init。尝试添加上面的内容。