Phonegap无法显示通过jQuery

时间:2015-10-27 00:01:31

标签: php jquery cordova

我有一个简单的PHP和一个HTML文件(由phonegap-index.html页面提供的文件)和一些jQuery代码来从PHP获取内容,这些内容托管在localhost上。一切都在浏览器中正常工作,但在phonegap中我只能看到html代码,即我不会通过jQuery看到通过PHP收到的内容。我已将我的IP地址和localhost添加到phonegap的config.xml文件中以进行白名单。 jQuery回调设置为JSONP。 Phonegap服务器安装在ubuntu上运行良好,iPhone 5s上安装了一个phonegap应用程序/客户端,它显示了任何简单的html内容,但没有显示通过jQuery收到的php内容。

我认为问题出在手机上,但是我花了三天时间才找到我做错了。

以下是我的文件: 的index.html

   <html>
   <head>
   <meta charset="utf-8" />
   <link rel="stylesheet" type="text/css" href="css/index.css" />
   <script type="text/javascript" src="cordova.js"></script>
   <script type="text/javascript" src="js/index.js"></script>
   <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    <!-- jQuery to get data from gettext.php page -->
   <script>
   $(document).ready(function(){
      $.getJSON('http://localhost/hello/gettext.php', function(jsonp){
      $("#txtHint").html(JSON.stringify(jsonp, null, 2));
      });
   });
   </script>
   </head>
   <body>
   <br /><br /><br />
   <div class="app">
       <h1>PhoneGap</h1>
       <div id="deviceready" class="blink">
           <p class="event listening">Connecting to Device</p>
           <p class="event received">Device is Ready</p>
       </div>
   </div>

   <script type="text/javascript">
      app.initialize();
   </script>
   <!-- this section is populated by jQuery -->
   <p>php content received via jQuery: <span id="txtHint"></span></p>
   </body>
   </html>

这是我的gettext.php页面

  <?php
   header('content-type: application/jsonp; charset=utf-8');
   header("Access-Control-Allow-Origin: *");
   echo json_encode("Hello World!");
   ?>

以下是白名单的config.xml文件的特定部分

<access origin="*" />
   <access origin="http://127.0.0.0/hello2/gettext.php" />
   <access origin="http://localhost/hello2/gettext.php" />
   <plugin name="cordova-plugin-whitelist" version="1" />
   <allow-intent href="http://localhost/hello2/gettext.php" />
   <allow-intent href="http://*/*" />
   <allow-intent href="https://*/*" />
   <allow-intent href="tel:*" />
   <allow-intent href="sms:*" />
   <allow-intent href="mailto:*" />
   <allow-intent href="geo:*" />
   <platform name="android">
     <allow-intent href="market:*" />
   </platform>
   <platform name="ios">
     <allow-intent href="itms:*" />
     <allow-intent href="itms-apps:*" />
   </platform>

1 个答案:

答案 0 :(得分:1)

它可以在浏览器中运行,但在您连接到localhost时无法在手机上运行。 localhost127.0.0.1只是一个主机名,可用于访问在该主机上运行的网络服务。

您的php服务器未在iPhone上运行,因此尝试从手机连接到localhost并不合理。您需要连接到服务器的外部可用地址。