0

I am working on a HTML5 app that needs to get data from a server. To do so I need to use Javascript, see below code. But no matter what I do, it always returns 0. It should, with the below code, return a 403 with correct url, or 404 with wrong url, it does neither. The container app should allow cross site scripting. I have the app running in the Intel App Preview. Windows 10 / Android 5.1.1 Sony Experia Z1 Compact.

What I want it to do is: connect to server, give server right username;password, return a package of data, to be used in App.

Tested these:
- Wifi works
- as does internet connection
- jQuery version of the below.

    var xhr = new XMLHttpRequest();
    xhr.open("GET", "https://pageiuse.com", true);
    xhr.onload = function(){
    if (xhr.readyState == 4) {
        if(xhr.status == 200) {
            var json_string = xhr.responseText;
            var json = JSON.parse(json_string);
            toastMessage("Succes!");
        } else if(xhr.status == 404) {
            toastMessage("404!");
        } else {
            toastMessage("Error!!! " + xhr.status);
        }

    } else {
        toastMessage("readyState " + xhr.readyState);
    }};
    xhr.send(null);

All help is welcome, or suggestions on how to debug this.

*Update, there is data coming back when I use xhr.responseText, but xhr.status stays 0. Been digging into the "Cordova Whitelisting", but nothing getting better for now.

1 Answers1

0

Here is how I solved it:

@xmnboy provided the link to: use jQuery 2

This is the code I used:

$.ajax(
    {
    type: "GET",    
    crossDomain: true, //;paf; see http://stackoverflow.com/a/25109061/2914328
    url: "http://www.serverexample.com",
    async: true,
    dataType: "arraybuffer", // that is what I have incoming.
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "basic username:password");
        }
    })

    .always(function (retorno, textStatus, jqXHR) { //;paf; see http://stackoverflow.com/a/19498463/2914328
        //toastMessage("jQuery version: " + $.fn.jquery + "\n retorno:" + retorno.status + "\n textStatus:" + textStatus + "\n jqXHR:" + jqXHR.status) ;

    var returnStatus = jqXHR.status ;
    if (returnStatus === undefined) {
        returnStatus = retorno.status;
    }
    switch (returnStatus) {
            case 0:
                console.log("0 == exit oke", "Here") ;

            case 200:
                console.log("200 == exit oke", "Here") ;
                break;

            case 404:
                console.log("404 == exit by fail", "Here") ;
                break;

            default:
                console.log("default switch happened") ;
                console.log(JSON.stringify(jqXHR.responseJSON));
                break ;
        }
});