我有一个简单的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>
答案 0 :(得分:1)
它可以在浏览器中运行,但在您连接到localhost时无法在手机上运行。 localhost
或127.0.0.1
只是一个主机名,可用于访问在该主机上运行的网络服务。
您的php服务器未在iPhone上运行,因此尝试从手机连接到localhost
并不合理。您需要连接到服务器的外部可用地址。