在PhoneGap中使AJAX工作
在PhoneGap中使AJAX工作
目前我需要使用PhoneGap调用另一个网页服务器上的PHP脚本来从我的数据库中检索数据。使用硬编码运行脚本可以正确地检索数据,但似乎Ajax调用要么没有返回任何内容,要么根本没有获取到数据。当前在控制台中我得到了“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) { $row = $stmt->fetch_assoc(); echo $row; print json_encode($row); } } }
原因:无法使用AJAX在PhoneGap中工作的问题可能是由于跨域访问的限制导致的。在默认情况下,PhoneGap应用程序无法直接访问其他域的资源,包括通过AJAX请求获取的数据。
解决方法:为了使AJAX在PhoneGap中正常工作,需要在PHP文件的顶部添加一行代码来允许跨域访问。代码如下:
header("Access-Control-Allow-Origin: *");
这行代码的作用是设置响应头中的"Access-Control-Allow-Origin"字段,将其值设置为"*",表示允许任何源(域)的请求访问该资源。这样,即使是从PhoneGap应用程序中发起的AJAX请求,也能够成功地访问到该PHP文件。
通过添加上述代码,可以解决AJAX在PhoneGap中无法工作的问题,使得应用程序能够正常获取跨域资源。