Ma configuration est la suivante:
Une page Web, écrite principalement en jQuery et HTML, doit accéder à la fois à la firebase database SQLite et au programme C. Il utilise des requêtes AJAX – voici un exemple tiré du code:
function sendCommand(cmd, callback) { $.ajax({url: "http://192.168.42.90:6112/?cmd=" + cmd, dataType: "jsonp", success: function(d,s,x) { callback(d); }, jsonpCallback: "json", error: function(xhr) { alert('Error: ' + xhr.status); } }); }
Donc, je pourrais l’appeler avec quelque chose comme sendCommand (“get_x”, updatePosition) – pour qu’il envoie la commande get_x au programme C et, s’il obtient un retour positif, exécute ce retour via la fonction updatePosition.
Donc, tout cela fonctionne SPLENDIDEMENT si je vis sur une page Web sur le même ordinateur. Si je passe à une autre machine – dans ce cas précis, à un téléphone Android, en mode IP connecté via USB, cela … fonctionne en quelque sorte. C’est ce qui me laisse perplexe – il n’échoue pas en silence, comme j’ai l’habitude de faire JavaScript. Autant que je sache, il envoie la demande, affirme qu’il a récupéré les données et exécute la fonction de rappel – uniquement, selon le programme C, rien ne s’est jamais produit. selon Wireshark, aucun paquet n’a été envoyé; et les “données” qu’il récupère sont une chaîne vide, spécialement formatée. Si je m’attends à “(5,5)” comme sortie de C, cela devient “(0,0)” – pourquoi obtient-il quelque chose? Beaucoup moins de remplissage “(,)” avec des 0?
Très étrange. J’ai essayé diverses petites choses, comme changer le dataType en “json”, m’assurer que toutes mes permissions sont correctement configurées, etc. Je suis à peu près sûr qu’Apache n’interfère pas, car il n’y a rien dans les journaux. ça me fait que je ne vois rien sur Wireshark, de toutes choses. C’est comme si le téléphone n’essayait tout simplement pas de faire la demande.
c’est peut-être la mise en cache des requêtes ajax? essayez de définir cache: false dans vos demandes ajax jQuery.
Avez-vous vérifié la console dans Firebug ou un débogueur JS? J’ai rencontré le problème que jquery vous empêche de faire des appels AJAX de cette manière en raison de problèmes de sécurité et je vais retourner cette erreur.
Access to ressortingcted URI denied" code: "1012
Cependant, il semblerait que certaines personnes aient tenté de contourner le problème. Donnez-lui une lecture si vous n’avez pas déjà http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide