3

我正在尝试使用 Phonegap 3.1 创建一个 Android 应用程序。该应用程序需要从我的远程服务器检索数据,该服务器正在运行 Apache,并Header set Access-Control-Allow-Origin "*"为应用程序应该从中提取数据的 URI 设置了指令。我已经<access subdomains='true' url='*' />在 Phonegap 的 config.xml 文件中设置了。如果我将网页放入与服务器分开的本地 Apache 目录(不同物理位置的不同域上的不同机器)并从 Chrome 调用它,但当我尝试调用它时,下面的代码可以工作并运行“成功”功能通过Phonegap,它会抛出一个不太有用的错误{"readystste":0,"responseText":"","status":0,"statusText":"error"}"readystate":0看起来它可能是仅在 Phonegap 中发生的访问或跨站点脚本错误,所以我愿意相信这是我需要在我的最终配置的东西,但我

感谢您的任何帮助,您可以提供。我需要让它运行,并且已经在网上搜索了一个星期试图让它工作。

<!DOCTYPE HTML>
<HTML>
<HEAD>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" type="text/css" href="css/affirmation.css">
  <script src="js/jquery-1.10.1.min.js"></script>
  <script>

  $.support.cors = true;

  $(document).ready(function(){

      $.ajax({
        type: 'POST',
        url: 'http://www.remote.server/info/API',
        datatype: 'json',
        data: JSON.stringify(
          { method: 'content',
          params: [
            'text passed to function on server' 
          ],
          id: '1' }
        ),
        success: function(response, textstatus, jqxhr) {
        $('#graf1').text(JSON.stringify(response));
        $('#graf3').text(JSON.stringify(textstatus));
        $('#graf6').text(JSON.stringify(jqxhr));
        },
        error: function(jqxhr, textstatus, errorthrown) {
        $('#graf1').text(JSON.stringify(jqxhr));
        $('#graf3').text(JSON.stringify(textstatus));
        $('#graf6').text(JSON.stringify(errorthrown));
        }

      });          
  });

  </script>

</HEAD>
<BODY>
  <DIV ID="header">JSON Server Test</DIV>
  <DIV ID="content">
  <DIV ID="graf1" CLASS="bodytext"></DIV>
  <DIV ID="graf3" CLASS="bodytext"></DIV>
  <DIV ID="graf6" CLASS="bodytext"></DIV>
</BODY>
</HTML>
4

3 回答 3

7

尝试按照以下方式放入<access origin="*" subdomains="true" />文件www/config.xml中:http: //cordova.apache.org/docs/en/3.1.0/guide_appdev_whitelist_index.md.html#Whitelist%20Guide 在你的问题中,你有url而不是origin.

我在想的另一件事,你是用模拟器测试吗?如果是这样,您是使用远程服务器的完整 URL 还是仅使用 localhost?因为localhost在模拟器上将映射回模拟器本身,而不是您在机器上运行的服务器。

于 2013-10-14T19:41:57.877 回答
0

你有使用互联网的权限吗?PhoneGap 文档:连接

于 2013-10-14T18:47:56.753 回答
0

我尝试了一切,包括<access origin="*" subdomains="true" />但对我不起作用。

然后我添加了

<plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" />

在我的 config.xml 中,它起作用了。

于 2017-06-05T13:44:29.843 回答