2011-03-29 4 views
1

Je suis nouveau sur jQuery (et AJAX d'ailleurs) et j'essaie de comprendre comment fonctionnent les méthodes get/post/ajax. J'ai donc créé une simple page .html qui contiennent la déclaration suivante jQuery:Comment utiliser jQuery.get() avec une URL complète

function myImport() { 
    var url = '../rawdata.txt'; 
    $.get(url, function (data) {  
     $('#importedHtml').text(data); 
    }); 
} 

Vous remarquerez que le var url est défini dans un fichier local nommé « rawdata.txt ». Ce fichier contient exactement ces données:

méthode
0,Sun 18:32:56,0, 
1,999 uS,1, 
2,4561 F,0, 
3,3.4,1, 
4,3.3,1, 
5,0.0%,0, 
15,0 G,1, 
16,0 G,1, 
19,18.55hrs,3, 
27,Setpoints,3, 
28,ON: 50.16hrs,0, 
29,Interlocked S,3, 
30,Interlocked S,3, 
31,Interlocked S,3, 

Comme vous pouvez le voir, lorsque la fonction monImportation() est tiré, le .get() saisit le fichier rawdata.txt local, puis affiche le contenu du fichier un élément html. Tout cela fonctionne bien.

Cependant, je voudrais utiliser la méthode .get() pour récupérer des données d'un serveur web en direct (pas un fichier local), mais quand j'essaye de le faire, je n'obtiens aucune réponse du serveur. Je sais, à coup sûr, que le serveur web est en place et répond correctement aux demandes (via un navigateur normal). Donc, à ce stade, je ne suis pas sûr si j'utilise incorrectement la méthode .get() ou autre chose.

Par exemple:

La déclaration jQuery mise à jour ressemble à ceci:

function myImport() { 
    var url = 'http://173.196.155.45/taco.cgi?F0=AV&F1=4564'; 
    $.get(url, function (data) { 
     $('#importedHtml').text(data); 
    }); 
} 

Vous remarquerez que la seule différence est la valeur de la variable 'url'. L'URL var pointe maintenant vers un serveur Web en direct. La requête url répondra avec des données similaires aux données présentes dans le fichier 'rawdata.txt'.

Vous remarquerez que si vous visitez the live url que vous obtiendrez une réponse de texte brut (pas de syntaxe HTML, en-têtes, etc - juste une chaîne de données). Toutefois, si vous exécutez l'exemple jQuery, il n'y a pas de contenu dans la variable "data" de la méthode .get(). Est-ce que j'utilise la méthode .get() incorrecte dans le script qui contient l'URL en direct? Plus précisément, comment puis-je utiliser jQuery pour saisir les données qui se trouvent à this live url?

Répondre

2

Si votre fichier HTML est local mais que le fichier de données est distant, vous ne respectez pas les règles de sécurité «d'origine croisée».

Ceux-ci nécessitent que les requêtes AJAX soient traitées à partir du même domaine que le fichier HTML d'origine.

Pour contourner, soit:

  1. Utilisez JSONP, qui subvertit la politique en utilisant <script> balises, ou
  2. Regardez fournir l'en-tête de votre Access-Control-Allow-Origin script CGI.
Questions connexes