2010-09-14 14 views
14

Chcę uzyskać dostęp do otwartego API poprzez AJAX w aplikacji mobilnej, grzywny praca w iPhone, ale nie działa w aplikacji Android PhoneGap:jQuery nie działa w aplikacji Android PhoneGap

returning error->"error message-null,typeerror-Result of expression 'data'[null] is not an object and error status-parsererror"

Czy istnieje wszelkie ustawienia przeglądarki muszą być przestrzegane.

Chcę wezwać serwis internetowy w Android PhoneGap aplikacji:

$.ajax({ 
    url:'stringURL', 
    beforeSend: function(x) {  
    x.setRequestHeader('Authorization','username/pwd'); 
    }, 
    dataType:"xml", 
    contentType:'application/xml', 
    timeout:10000, 
    type:'POST', 
    success:function(data) { 
    alert(data); 
    }, 
    error:function(XMLHttpRequest,textStatus, errorThrown) {  
    alert("Error status :"+textStatus); 
    alert("Error type :"+errorThrown); 
    alert("Error message :"+XMLHttpRequest.responseXML); 
    } 
}); 
+1

Która przeglądarka i jak wygląda Twój kod? –

+0

Aktualizuję wpis z częścią kodującą i jako przeglądarka, biorąc pod uwagę, w telefonie, domyślną przeglądarką jest safari i android, domyślną przeglądarką jest opera mini –

+2

@Mayur - Dzięki za aktualizację kodu, tak jak w przeglądarce: nie powinieneś * zakładać * ustawienia domyślne lub wymuszanie na innych ... wszyscy, których znam na telefonie z Androidem, korzystają z przeglądarki innej niż domyślna. –

Odpowiedz

2

Wydaje się, że istnieje Błąd analizy na danych naciągane. Chcesz XMLHttpRequest do parsowania danych XML, więc pobrany URL musi zwrócić prawidłowy XML. Istnieje kilka możliwych powodów, dla których działa on na jednym, ale kończy się niepowodzeniem na innej platformie:

-Wersje żądań przeglądarki mogą się różnić, co skutkuje odmienną odpowiedzią serwera. Niektóre serwery mogą podawać odpowiedzi o statusie HTTP 200 z pewnym komunikatem o błędzie w przypadku problemów, które nie są przetwarzane na prawidłowy kod XML.

- Zwrócony plik XML może być problematyczny i dobrze analizowany na iPhonie z powodu dziwactw w przeglądarce, ale kończy się niepowodzeniem w innej wersji lub wariancie WebKit, z którego korzysta Android.

-Pobrane dane są uszkodzone z powodu innych nagłówków żądań, dostawcy, proxy lub innych efektów. Na przykład niektóre serwery proxy obsługują tylko żądania HTTP/1.0, a złe serwery zachowują się za każdym razem przy pomocy HTTP/1.1 z kodowaniem porcjowanym, więc kod XML zostanie uszkodzony przez nagłówki porcji.

Do celów debugowania można zmienić żądanie na żądanie tekstowe i pokazać pobrane dane, a nawet zapisać je na karcie SD urządzenia, jeśli to możliwe w aplikacji. Następnie możesz zweryfikować, że dotarł on nienaruszony i jest w rzeczywistości prawidłowym kodem XML.

+0

Zmieniłem żądanie na tekst i nadal funkcję ajax zwracającą ten sam błąd, co wspomniałem w pytaniu. Jeśli zrobiłeś to z powodzeniem w aplikacji Android-phonegap, w odpowiedzi podaj poprawny javascript. czekam na twoją właściwą odpowiedź. –

+0

trochę dziwne .. Obecnie nie mam podobnego projektu phonegap do sprawdzenia, przepraszam. Może mógłbyś spróbować zwykłego obiektu XMLHttpRequest, tak jak phonegap zrobiłby to w jego wnętrzu, pobierał dane z twojego serwera i sprawdzał wyniki lub też nie. – dronus

Powiązane problemy