2010-09-14 6 views
14

ich offene API durch Ajax in der mobilen Anwendung zugreifen möchten, in iphone seine Arbeit gut, aber funktioniert nicht in Android phonegap Anwendung:jQuery Ajax-Funktion funktioniert nicht in Android PhoneGap Anwendung

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

Gibt es Jede Browsereinstellung muss folgen.

Ich möchte in android-phonegap Anwendung der Web-Service nennen:

$.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

Welcher Browser und wie sieht Ihr Code aus? –

+0

Ich aktualisiere Beitrag mit dem Coding Teil und als Browser berücksichtigt, in Telefon, Standard-Browser ist Safari und in Android, Standard-Browser ist Opera Mini –

+2

@Mayur - Danke für die Aktualisierung Ihres Codes, wie für den Browser: Sie sollten nicht * annehmen * die Standardwerte, oder zwinge andere zu ... Jeder, den ich mit einem Android-Handy kenne, benutzt einen nicht standardmäßigen Browser. –

Antwort

2

Es scheint, dass es einen Parser-Fehler geholt auf die Daten ist. Sie möchten, dass XMLHttpRequest XML-Daten analysiert, sodass die abgerufene URL gültiges XML zurückgeben muss. Es gibt mehrere mögliche Gründe, warum das auf einem funktioniert, aber auf einer anderen Plattform fehlschlägt:

-Die Browseranforderungsheader können unterschiedlich sein, was zu einer anderen Serverantwort führt. Einige Server geben möglicherweise HTTP 200-Statusantworten mit einer Fehlermeldung im Fall von Problemen, die nicht zu gültigem XML analysieren.

-Die zurückgegebene XML kann problematisch sein und analysiert gut auf dem iPhone aufgrund von Macken im Browser, aber scheitern auf einer anderen WebKit-Version/Variante die Android verwendet.

-Die abgerufenen Daten sind aufgrund anderer Anfrage Header, Provider, Proxy oder andere Effekte beschädigt. Zum Beispiel behandeln einige Proxy-Server nur HTTP/1.0-Anfragen, und fehleranfällige Server bedienen HTTP/1.1 mit Chunked-Codierung jedes Mal, so dass die XML durch die Chunk-Header beschädigt wird.

Für Debugging-Zwecke können Sie die Anfrage in eine Textanfrage ändern und die abgerufenen Daten anzeigen, oder sogar auf der SD-Karte des Geräts speichern, wenn möglich in Ihrer Anwendung. Sie können dann überprüfen, ob es intakt angekommen ist und tatsächlich gültiges XML ist.

+0

Ich änderte die Anfrage in Text und immer noch Ajax-Funktion, die den gleichen Fehler wie ich in der Frage erwähnt. Wenn Sie es erfolgreich in Android-phonegap App gemacht haben, bitte geben Sie Javascript in Ihrer Antwort. Warte auf deine richtige Antwort. –

+0

irgendwie seltsam .. Ich habe derzeit kein ähnliches Phonegap-Projekt zur Überprüfung, sorry. Vielleicht könntest du ein normales XMLHttpRequest-Objekt ausprobieren, wie es phonegap in seinem Inneren tun würde, deine Server-Daten mit ihm holen und die Ergebnisse überprüfen oder wenn es auch fehlschlägt. – dronus