phonegap XMLHttpRequest responseText пуст с Android, но содержит данные в iphone - PullRequest
0 голосов
/ 25 ноября 2011

Я разрабатываю приложение в PhoneGap + dreamweaver cs5.5, которое выполняет вызов обработчика (.ashx) и возвращает строку JSON.Я делаю следующее:

function appReady(){
var ajax = new XMLHttpRequest();
    ajax.open("GET","https://xxxx.xxxxx.com/xxxx/xxxx.ashx?method=GetUser&email=xxx@xxxx.com&pwd=123456",false);
    ajax.send();
    ajax.onreadystatechange=function(){
        if(ajax.readyState == 4) {//Request complete !!
            if (ajax.status == 200 || ajax.status == 0) { // OK response
                alert(ajax.responseText);
                document.getElementById('main').innerHTML = ajax.responseText;
            }
        }
    }
}

Когда я запускаю приложение на эмуляторе iphone, я восстанавливаю json string responseText, но в эмуляторе Android он пуст.В iphone возвращаемое состояние равно 200, но в android равно 0. Если проблема заключалась в запросе домена coss, не сработало бы на любой платформе, верно?

Я не понимаю, почему пример вики:http://wiki.phonegap.com/w/page/42450600/PhoneGap% 20Ajax% 20Sample

работает корректно на двух платформах, а у меня только на iphone ...

1 Ответ

2 голосов
/ 09 марта 2012

Проверка на наличие проблем междоменных сценариев.Я сделал почти то же самое, за исключением того, что мой URL был фактически расположен в том же домене.На Android и ПК он работал нормально, но iphone отказывался работать.Когда я изменил с 'https://whatever.whatever.com/foo.asp' на просто foo.asp - все заработало!

var rootpath;
rootpath = "https://the.same.dam.place/foo.asp";   // did not work!
rootpath = "foo.asp";   // shortening it worked.
function read_foo(whatever)
{
    var url = rootpath + "?whatever=" + whatever;
    xmlHttp = GetXmlHttpObject(stateChanged);
    xmlHttp.open("GET", url , true);
    xmlHttp.send(null);
}
function stateChanged()
{
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        var return_place = document.getElementById('return_place');
        var thetext = xmlHttp.responseText;
        return_place.innerHTML= thetext;
    }
}

также вижу:

Пустой responseText из XMLHttpRequest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...