Ajax 查询在电话间隙 iOS 应用程序中失败,状态为 0
Posted
技术标签:
【中文标题】Ajax 查询在电话间隙 iOS 应用程序中失败,状态为 0【英文标题】:Ajax query failed with status 0 in phone gap iOS app 【发布时间】:2013-07-12 07:49:52 【问题描述】:我正在开发一个带有 phonegap 的 ios 应用程序,其中我使用foursquare api列出所有附近的场地。这是我用于列出场地的代码。
$.getJSON('https://api.foursquare.com/v2/venues/search?ll='+pos+'&radius=10000&client_id=2POUFAUU4ZBJ2MTDOY3S2YHR2NIT52FYW0LUTPHBMNTJFJNQ&client_secret=YFDZI1YWV3ZI5S5SPM2DZJEQIEBPIDJ5XFZBWTIKIQZVQNYM&v=20120101&limit=60',
function(data)
console.log(pos);
$.each(data.response.venues, function(i,venues)
content = '<li id="list-item"> <p><a href="#reviewPage" onClick=" return reviewPageAction(this)">' + venues.name + '</li>';
$(content).appendTo("#mer");
);
);
如您所知,我已经为每个列表项提供了一个链接,它将加载一个评论页面,该页面将显示场地的详细信息。我为每个列表项提供了一个 onClick 函数,该函数将使用 ajax 调用我的 php 文件从我的数据库中获取一些详细信息。
以下是onclick函数的代码
$.ajax(
type: 'GET',
url: 'http://127.0.0.1/myPHPFile.php',
data: id: venueId,
success: function(response)
alert(response);
,
error:function(xhr,status,error)
alert("failure "+xhr.status);
$("#result").html('there is error while submit');
);
出于测试目的,在 myPHPFile.php 中只是回显一个字符串。
问题是我总是收到状态为 0 的错误。但它在模拟器中没有显示任何错误。在设备和桌面浏览器中显示错误!!请帮帮我。
【问题讨论】:
【参考方案1】:您是否在 config.xml 中配置了访问权限?喜欢:
<access origin="https://api.foursquare.com" />
或所有域:
<access origin="*" />
更多信息请访问:http://docs.phonegap.com/en/2.4.0/guide_project-settings_index.md.html
【讨论】:
但是foursquare的东西工作正常。唯一的问题是对我自己的php文件的ajax请求不能正常工作。我收到状态 0 错误 如果你的PHP在myserver/myphp.php这样的域下,并且你的应用在PhonegapApp或浏览器下的file://上运行,是一个无效的跨域访问。您应该在 config.xml 下配置可访问域或在 config.xml 中添加 我已经检查了 config.xml 并且 已经存在于该文件中。 你能告诉我如何手动配置它以提供对我的 php 文件的访问权限 看这个:simonmacdonald.blogspot.com.es/2011/12/…【参考方案2】:http://127.0.0.1/
是同一台机器,所以如果你在模拟器上试一试,它可以工作,因为你在那台机器上有 PHP 脚本。
如果你在设备上试一下,http://127.0.0.1/
是设备,设备没有PHP脚本。
您必须使用服务器的本地 IP,类似这样,但将 192.168.1.20 更改为服务器的真实本地 IP(您可以在 windows 上使用 ipconfig
或在 mac/linux 上使用 ifconfig
知道它)
$.ajax(
type: 'GET',
url: 'http://192.168.1.20/myPHPFile.php',
data: id: venueId,
success: function(response)
alert(response);
,
error:function(xhr,status,error)
alert("failure "+xhr.status);
$("#result").html('there is error while submit');
);
【讨论】:
【参考方案3】:使用JSONP,用PHP返回数据:
echo $_GET['callback']. '('. json_encode($returnData). ');';
jQuery:
$.getJSON('yourApiUrl',
function(data)
console.log(data);
);
【讨论】:
以上是关于Ajax 查询在电话间隙 iOS 应用程序中失败,状态为 0的主要内容,如果未能解决你的问题,请参考以下文章
无法解决电话间隙 [错误] cmd:命令失败,退出代码为 ENOENT 3
如何从 html / javascript 调用 MainViewController.h 方法? (IOS 电话间隙)