J’ai développé un exemple d’application sur Android à l’aide de Phonegap.
Lorsque vous cliquez sur un bouton, une requête Ajax est envoyée au serveur ( http://192.168.0.199:8080/test.php ).
Le test.php fait écho à Hello World .
J’utilise Jquery 1.5 pour effectuer l’appel Ajax.
Voici le code pour l’appel Ajax:
$.ajax({ url:"http://192.168.0.199:8080/test.php", beforeSend: function(x) { alert("The URL "+url); }, type:'POST', crossDomain: true, success:function(data) { alert(data); }, error:function(XMLHttpRequest,textStatus, errorThrown) { alert("Error status :"+textStatus); alert("Error type :"+errorThrown); alert("Error message :"+XMLHttpRequest.responseXML); } });
Mais, chaque fois que cette fonction est appelée, elle génère une erreur:
Error Type: No Transport
Error Message: undefined
Error Status: error
Remarque: j’ai ajouté l’autorisation INTERNET dans le fichier Manifest. J’utilise un appareil G1 sous Android 1.6
Merci d’avance
On dirait que vous essayez d’appeler un client au sein d’un réseau local.
Essayez de valider votre access à ce réseau local.
Depuis jQuery 1.5, une nouvelle implémentation AJAX / XHR est utilisée. Et Android 1.5 / 1.6 ne dit pas qu’il prend en charge CORS (appel interdomaine). Donc, un moyen de «réparer» cela consiste à informer jQuery qu’il supporte cors:
jQuery.support.cors = true;
Je ne pouvais pas reproduire le problème sur 2.1 et plus. Je suppose donc que la mise en œuvre XHR à partir de cette version indique qu’elle prend en charge cors.