让 AJAX 在 PhoneGap 中工作
Posted
技术标签:
【中文标题】让 AJAX 在 PhoneGap 中工作【英文标题】:Getting AJAX to work in PhoneGap 【发布时间】:2013-11-09 06:33:42 【问题描述】:现在我需要使用 phonegap 调用另一个网络服务器上的 php 脚本来从我拥有的数据库中检索数据。使用硬代码运行脚本可以正确检索数据,但它显示为 ajax 调用没有返回任何内容,或者甚至没有将数据作为 post 获取。目前在控制台中我收到"Origin null is not allowed by Access-Control-Allow-Origin. "
$(document).ready(function()
$('.check').click(function()
alert("Step1");
var thisID = $(this).attr('id');
alert(thisID);
$.ajax(
type: "POST",
url: "http://csmaster.sxu.edu/group2/group2/CougarLunch/retrieveColumn.php",
data: ID: thisID,
cache: false,
async:true,
datatype: "json",
success: function(data)
console.log(data);
alert(data.ItemID);
);
);
);
PHP 如果它是相关的,我对此表示怀疑
if(isset($_POST['ID']))
$ID = $_POST['ID'];
function retrieve($ID)
$stmt = $mysqli->query("SELECT * FROM group2.menu WHERE ItemID = $ID");
if($stmt->num_rows) //if there is an ID of this name
$row = $stmt->fetch_assoc();
echo $row;
print json_encode($row);
【问题讨论】:
当它是手机上的实际应用时,你不应该受到跨域策略的限制。 1 为什么会这样? 2. 当我在 chrome 中启动它时它已经无法正常工作,所以我对此表示怀疑。 查看这些问题:***.com/questions/11641442/…***.com/questions/13920782/…***.com/questions/15363005/… 您是否在 phonegap 配置中将域列入白名单? 请注意此代码header("Access-Control-Allow-Origin: "*");
,因为它本质上会打开您的 PHP 文件,以完全由任何 AJAX 请求运行,因此理论上我可以从我的网站向您的网站编写 AJAX 调用,并且访问该 URL 上可用的任何数据。我建议搞乱console.log(document.URL);
,看看是否可以缩小PhoneGap 可能模拟的URL/域。从不同的手机、桌子、网络、wifi 开/关等尝试。
【参考方案1】:
将此行添加到 php 文件的顶部以允许访问:
header("Access-Control-Allow-Origin: "*");
【讨论】:
【参考方案2】:需要传入androidManifest.xml
<access origin="*" />
phonegap doc
【讨论】:
以上是关于让 AJAX 在 PhoneGap 中工作的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap android ajax调用在浏览器中工作,而不是在移动设备上
逐步让 Google Analytics 在 iOS 上的 PhoneGap 1.2.0 中工作(phonegapalytics)
如何让 Parse.com 推送通知在 Cordova/Phonegap Android 应用程序中工作?
如何使splashscreenimage在ios phonegap应用程序中工作?