xmlhttpRequest状态在phonegap中返回0

时间:2015-11-02 05:56:27

标签: javascript android cordova

我正在使用phonegap制作混合应用。我正在使用xmlhttpRequest解析json。我的问题是当我尝试在浏览器上获取响应时,http.status是200并且响应没问题但是当我尝试在Android设备上运行代码时,http.readystate出来是4但http.status来了0,我得到空响应。我搜索了很多链接并使用了CORPS,但问题仍然存在。任何人都可以告诉我,如何在Android设备上获得http.status为200?以下是我的代码。

function myFunction(){
 alert("inside function");
 var http;
 if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
    http = new XMLHttpRequest();
    alert(" inside if");
 }
 else
 {
     // code for IE6, IE5
     alert("inside else");
     http = new ActiveXObject("Microsoft.XMLHTTP");
 }
    var url = "http://localserver/abc/v1/signup";
    var params = "email=adsefgbbgtrhtrh &password=tyujkuykyuil &phone=95876894760458 ";
    http.open("POST", url, true);
    http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    http.onreadystatechange = function() {
        //Call a function when the state changes.
        if(http.readyState == 4) {
            alert("inside if"+http.responseText); //Here i get empty text
        }
        alert("inside if function"+http.status+"state"+http.readyState);  //Here http.status is 0 and readystate is 4 
    }
    http.send(params);
    response.writeHead(200, {
        'Content-Type': 'text/html',
        'Access-Control-Allow-Origin' : '*'});
    alert("ouside if"+http.status+"state"+http.readyState);}

在服务器端,我添加了行:

header('Access-Control-Allow-Origin:*');header('Content-Type: application/x-www-form-urlencoded');

我还在config.xml中设置了访问源

<access origin="*"  subdomains="true"/>
<access origin="http://localserverIP*" subdomains="true"/>
<access origin="http://google.com" subdomains="true"/>

请帮忙!

1 个答案:

答案 0 :(得分:0)

当我使用XMLHttpRequest时遇到了同样的问题。所以我使用$ .ajax,一切正常。我知道$ .ajax基于XMLHttpRequest,但它的工作原理和开发更容易。我希望即使答案有点晚也有帮助。 =)