我知道这个话题已经进行了一些讨论。但是,仍然缺乏明确性。这是我的问题。 我在Mac OS X(Mountain Lion)上使用cordova 2.2.0。我正在尝试对远程服务器执行ajax调用。但是,常见的$ .ajax调用没有按照我预期的方式工作,因为响应的状态代码为0,这系统地触发了错误回调。当我改为明确使用XMLHttpRequest时,它有点奏效。但我仍然从服务器得到一个空的响应。当我在浏览器中尝试(Safari和Chrome)时,我可以看到服务器发送的响应。以下是我的两个问题:
是否知道ios模拟器是否不处理跨域请求,尤其是来自服务器的响应
var req = new XMLHttpRequest();
req.open("POST", "http://domain:8000/registration", true);
req.responseType = "text";
req.withCredentials = true;
req.onreadystatechange = function(){
if (req.readyState == 4) {
if ((req.status == 200) || (req.status == 0)) {
alert(req.responseText);
}
}
}
req.send($( '#studreg')序列化());
有关您的信息,这是我第一次写的通常的ajax调用:
$.ajax({
url: 'http://domain:8000/registration',
type: 'post',
data: $('#studreg').serialize(),
dataType: 'json',
cache: false,
timeout: 3000,
error: function(xhr, status, errorThrown){
if (xhr.status == 0) {
alert("Well that's fine!");
} else {
alert("error");
alert(xhr.status);
alert("Error type :"+errorThrown);
alert("Error message :"+xhr.responseText);
}
},
success: function(fullName) {
alert("it works!");
alert(fullName);
}
});
PS:我已将远程服务器列入白名单(实际上在Cordova.plist中添加了*到ExternalHosts)