phonegap+iOS,http请求在本地文件上总是返回状态0
phonegap + iOS, http request always return status 0 on local files
我使用的是Phonegap 3.3.0,在iOS上,无论文件是否存在,以下http请求总是返回0!!
var url = './images/pros/imagefile.png';
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
http.status
如果文件存在,它会返回0,但如果我尝试了一个错误的网址:
var url = 'httpbabla/images/pros/imagefile.pngfkjdqmkfjdmqsl';
或
var url = 'www/images/pros/imagefidddddddle.pngooijijijiojs';
它仍然返回0。
这是电话漏洞吗?如果没有,那么如何使用Phonegap和iOS快速区分现有的本地文件和未存在的文件?
感谢
使用异步请求和onload
和onerror
处理程序可能会更好。注意使用true
参数作为http.open
:的最后一个参数
var url = 'file:///does/not/exist.jpg';
var http = new XMLHttpRequest();
http.open('HEAD', url, true);
http.onload = function(e){/* Success! File exists; process the response... */};
http.onerror = function(e){/* Failed - file does not exist - do whatever needs to be done... */};
http.send();
一旦您调用http.send
,您的功能将完成,控制权将返回给调用者。无论是成功还是失败,都需要在onload
和onerror
回调中处理。如果你不熟悉Javascript回调(和闭包),花点时间学习如何使用它们——它们是该语言中最强大的功能之一。
这对我有效:
function UrlExists(url)
{
if ( isPhoneGap && isIOS() ) {
if (url.fileExists()){ //see prototype below
return true;
}else {
return false;
}
} else {
try {
http = new XMLHttpRequest();
http.open("HEAD", url, false);
http.send();
}
catch (err) {
//alert("An error:" + err.name + "---" + err.message);
}
//return http.status!=404;
if (http.readyState == 4) {
console.log("http.status="+http.status);
return http.status==200 || http.status==0;
}
}
}
// check local file existance for iOS
String.prototype.fileExists = function() {
filename = this.trim();
var response = jQuery.ajax({
url: filename,
type: 'HEAD',
async: false
}).status;
return (response != "200") ? false : true;
}
相关文章:
- 角度$http返回状态 0
- 如何使用 iframe.src 下载文件时获取返回状态代码
- $q.all 返回状态而不是值 - 为什么
- Redux 的 .getState() 不应该返回状态对象的副本
- 正在进行中的 Ajax 请求突然开始返回状态 = 0
- 我可以只返回状态对象的一部分而不是整个状态对象的新副本吗
- phonegap+iOS,http请求在本地文件上总是返回状态0
- 发送Json对象时,XMLHttpRequest返回状态0
- 如何在Node.js中从函数返回状态码
- 我所有的跨域调用都返回状态0
- JSON PUT返回状态码400
- 尝试使用韦氏词典API返回的XML,但请求失败.返回状态为0.该怎么做
- XHR上传在firefox中返回状态0
- HTML4和HTML5 -如果没有导航,我怎么知道是否有一个“返回”状态
- XMLHttpRequest异步不工作,总是返回状态0
- Ionic如何以编程方式返回状态
- AngularJS post返回状态码304,而不是post到play后端
- IE11在iFrame的Ajax POST操作期间返回状态0 (XMLHttpRequest: Network Erro
- HTTPXmlRequest返回状态为0的空响应文本
- 将图像从移动web应用程序(PhoneGap&JavaScript)上载到SOAP web服务返回状态0