phonegap XMLHttpRequest响应文本在galaxy s4中返回空,但不是galaxy note

时间:2014-02-15 00:07:14

标签: javascript android json cordova xmlhttprequest

我在连接到服务器时遇到问题,无法检查手机应用程序的凭据,我正在使用phonegap进行开发。

我已经检查了这些问题,但他们没有给我我正在寻找的东西

HTTP Requests in Phonegap

HTTP methods in PhoneGap

我已经阅读过这个主题并使用获取请求制作了多个网站,所以我对这个问题有很好的理解,我只是不确定发生了什么。

http://simonmacdonald.blogspot.com/2011/12/on-third-day-of-phonegapping-getting.html

以下是我的代码:

login.onclick = function() {
  var req = new XMLHttpRequest(); 
  req.open('GET', 'myServer'+username.value+".json", true);
  req.send();

  req.onreadystatechange = function() {
      if (req.readyState == 4) {
          if( (req.status == 200) || (req.status == 0) ) {
              var json = JSON.parse(req.responseText);
              if(json.length > 0) {
                  if((json[0]["username"] == username.value) && (json[0]["phoneCred"] == password.value)){
                              localStorage.setItem("loggedIn",username.value);
                              location.reload();
                  }
                  else {
                      alert("Incorrect password");
                  }
              }
              else {
                  alert("Incorrect username");
              }
          }
          else {
              alert("Error talking to server");
          }
      }
  }
};

我将req.status == 0添加到了一个if,现在我的按钮完全没有响应,我至少得到了警报,我没有和服务器通话。如果有人有任何见解,我将不胜感激!

好吧所以我的代码中有一些错误,其中我修复了这里是我的更新代码:

login.onclick = function() {
var req = new XMLHttpRequest();
req.open('GET', 'myServer'+username.value+'.json', true);
req.send();

alert('myServer'+username.value+'.json');
req.onreadystatechange = function() {
    if (req.readyState == 4) {
        if( (req.status == 200) || (req.status == 0) ) {

            //alert(req.responseText.length);
            alert(req.responseText);
            if(req.responseText.length > 0) {
                var json = JSON.parse(req.responseText); 
                if( (json[0].username == username.value) && (json[0].phoneCred == password.value) ){
                            localStorage.setItem("loggedIn",username.value);
                            location.reload();
                }
                else {
                    alert("Incorrect password");
                }
            }
            else {
                alert("Incorrect username");
            }
        }
        else {
            alert("Error talking to server");
        }
    }
}
};

我有两部手机,我一直在测试它,它在我的星系音符上工作,但不是在我的星系s4上,如果这可能暗示任何东西。

我还将我的xml文件中的访问标记更改为

<access origin=".*" />

从我做了一些阅读之后

Phonegap + Android status=0 returned from webservice

phonegap XMLHttpRequest responseText empty with android but contain data in iphone

Empty responseText from XMLHttpRequest

但是我的galaxy s4似乎仍然没有从服务器接收任何数据。它可能是相同的原始政策或一些我不确定的互联网访问设置。如果有人有任何建议,我会非常感激。

1 个答案:

答案 0 :(得分:3)

修正了它。我需要添加

<access origin="http://google.com" />

到config.xml文件,其中google.com是我自己的服务器。现在你可以看到Phonegap有一些很好的文档

http://docs.phonegap.com/en/3.3.0/guide_appdev_whitelist_index.md.html#Whitelist%20Guide