小编Mar*_*ani的帖子

Cordova AJAX调用仅在发布版本上失败

我正在开发一个用于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)

ajax android cordova

5
推荐指数
1
解决办法
1074
查看次数

标签 统计

ajax ×1

android ×1

cordova ×1