我正在开发一个用于android的Cordova应用程序,我有一个关于jquery ajax调用的奇怪问题:调试版本没有问题,而在发行版中,每个ajax调用都失败并出现错误.如果我使用USB在设备上运行一切都很好.如果我在调试模式下编译应用程序,将其复制并安装在设备上,一切都很好.
如果我在发布模式下编译应用程序并使用jarsigner和zipalign签名发布,并将其复制并安装在设备上,则相同的ajax调用将失败,其中readyState 0,responseText为空,状态为0,statusText为"error".
我花了一周时间搜索并尝试在stackoverflow和google上发现的所有类似问题,但没有任何改变.此主题主题类似,但我的SSL证书似乎没问题,并且没有提供其他解决方案: 在发布模式下运行Android Cordova应用程序时,Ajax调用失败
Cordova版本是6.5(但我也有6.4的问题).
这是app中的ajax调用:
glang = window.localStorage.getItem('glang');
show_loader();
$.support.cors=true;
$.ajax({
url: "https://app.laureatedesign.com/wp-content/plugins/designnews/ajax_langs.php",
data: "act=aj_app_lng_lst&lang="+glang+"&xend=x",
type: "POST",
dataType: "json",
timeout: 10000,
success: function(results) {
if (results["TYPE"]=="OK") {
$('#main').html(results["CONTENT"]);
$('#main').imagesLoaded( { },
function() {
show_content();
}
);
}
if (results["TYPE"]=="ERR") {
show_error();
}
},
error: function(XMLHttpRequest, status) {
console.log(status);
switch(status) {
default:
show_error();
break;
case "timeout":
show_error();
break;
}
}
});
Run Code Online (Sandbox Code Playgroud)
无论如何,服务器上的ajax文件ajax_langs.php可以简化如下:
<?php
$res = array("TYPE"=>"OK", "CONTENT"=>"Test");
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
echo json_encode($res);
?>
Run Code Online (Sandbox Code Playgroud)
这是我的config.xml:
<?xml …
Run Code Online (Sandbox Code Playgroud)