Javascript Phonegap AJAX请求未定义

Javascript Phonegap AJAX请求未定义,javascript,android,jquery,ajax,cordova,Javascript,Android,Jquery,Ajax,Cordova,我对网页中的cordova/phonegap/ajax请求有问题。由于该应用程序与运行在手机上的phonegapdeveloper应用程序协同工作,并完美地发送ajax请求。我认为这与权限/插件或其他东西有关。但当我使用cordova安装应用程序时,它不会发送任何东西,整个ajax请求将返回: readyState: 0 responseText: undefined status: 0 text status: error error 在config.xml中,我设置了 <access

我对网页中的
cordova/phonegap/ajax
请求有问题。由于该应用程序与运行在手机上的
phonegap
developer应用程序协同工作,并完美地发送
ajax请求。我认为这与
权限/插件
或其他东西有关。但当我使用
cordova
安装应用程序时,它不会发送任何东西,整个
ajax请求将返回:

readyState: 0
responseText: undefined
status: 0
text status: error
error
config.xml
中,我设置了

<access origin="*" />
下面是
ajax请求本身

$.ajax({
    method: "GET",
    crossDomain: true,
    dataType: 'json',
    url: 'http://mywebsite.com/projectname/index.php',
    data: { x: userLocation.latitude, y: userLocation.longitude },
    success: function(data){  
        alert("Success: "+ data);
    },
    error: function(xhr, textStatus, err) { 
        alert("readyState: " + xhr.readyState);
        alert("responseText: "+ xhr.responseText);
        alert("status: " + xhr.status);
        alert("text status: " + textStatus);
        alert("error: " + err);
    }
});
包括
cordova.js
到项目中:

<script type="text/javascript" src="cordova.js"></script>
<script src='js/jquery.js'></script>
<script>
    $(document).bind('mobileinit', function () {
        $.mobile.changePage.defaults.changeHash = false;
        $.mobile.hashListeningEnabled = false;
        $.mobile.pushStateEnabled = false;
    });
</script> 
<script ...here comes js file where ajax is called out

如果您运行的是Cordova 5或更高版本,则需要在HTML中添加内容安全策略元标记,以便向外部服务器发出Ajax请求。如果您从较旧的Cordova版本开始,并升级到5或6,则index.html中可能没有这些内容。如果您从CLI启动了新的Cordova 5或6应用程序,则模板“Cordova已准备就绪”应用程序将有一个,但提供的示例不允许向其他服务器发出Ajax请求,除非您明确配置它

您可以在index.html中添加类似的内容,以便在任何地方允许Ajax请求:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://api.fixer.io">

或者在调用后执行的内容中,表示Cordova已准备就绪。

如果运行Cordova 5或更高版本,则需要在HTML中添加内容安全策略元标记,以便向外部服务器发出Ajax请求。如果您从较旧的Cordova版本开始,并升级到5或6,则index.html中可能没有这些内容。如果您从CLI启动了新的Cordova 5或6应用程序,则模板“Cordova已准备就绪”应用程序将有一个,但提供的示例不允许向其他服务器发出Ajax请求,除非您明确配置它

您可以在index.html中添加类似的内容,以便在任何地方允许Ajax请求:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://api.fixer.io">

或者在调用后执行的某个程序中,表明Cordova已准备就绪。

显然,我花了足够长的时间才弄明白,下面是我如何使它工作的: 首先我卸载了项目中的所有插件,然后删除了platforms/android文件夹。在键入的命令中:

cordova platform add android
然后再次安装必要的插件。
现在它开始工作了。

显然,我花了足够长的时间才弄明白,所以我是如何让它工作的: 首先我卸载了项目中的所有插件,然后删除了platforms/android文件夹。在键入的命令中:

cordova platform add android
然后再次安装必要的插件。 现在它开始工作了

cordova platform add android