Phonegap(Cordova),Ajax和ios模拟器

时间:2013-01-17 07:27:13

标签: ios xcode cordova

我知道这个话题已经进行了一些讨论。但是,仍然缺乏明确性。这是我的问题。 我在Mac OS X(Mountain Lion)上使用cordova 2.2.0。我正在尝试对远程服务器执行ajax调用。但是,常见的$ .ajax调用没有按照我预期的方式工作,因为响应的状态代码为0,这系统地触发了错误回调。当我改为明确使用XMLHttpRequest时,它有点奏效。但我仍然从服务器得到一个空的响应。当我在浏览器中尝试(Safari和Chrome)时,我可以看到服务器发送的响应。以下是我的两个问题:

  1. 我在下面的代码中出错了吗?
  2. 是否知道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')序列化());

  3. 有关您的信息,这是我第一次写的通常的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)

0 个答案:

没有答案