2010-07-23 5 views
1
var array = new Array(); 
$.get('comics.txt', function(data) { 
    array = data.split(","); 
    for(var i = 0; i < array.length; i++) 
    { 
     var $page = array[i]; 
     $.ajax({ 
      url: $page, 
      success: function(data) { 
       alert(data); 
      } 
     }); 
    } 
}); 

comics.txt est un fichier qui contient des URL, séparés par des virgules.

Dans le code ci-dessus, l'appel $ .ajax ne fonctionne pas; $ page est l'URL correcte, mais cela ne fonctionne pas dans le contexte. alerte (données) provoque une boîte d'alerte vide à venir. J'ai besoin d'aide pour trouver un moyen d'obtenir les données de chaque page dans le tableau appelé tableau.

Merci d'avance.

+0

Il semble que votre boucle for s'exécute plus vite que vos ajax peuvent récupérer des données, ou que des différences de données peuvent se produire entre les boucles, d'où les alertes vierges. – ina

+0

aussi ajax a la même exigence de domaine. vous ne pouvez pas aller chercher si votre URL provient d'un domaine différent. – ina

+0

Si oui, comment puis-je obtenir des données via javascript à partir d'URL étrangères? – codersarepeople

Répondre

6

est $page une URL sur votre domaine? ... sinon, vous ne pouvez pas ... ajax

same domain policy


Si oui, comment puis-je obtenir des données via javascript de URL étrangères?

vous avez yo obtenir de votre serveur ...

par exemple ..

var array = new Array(); 
$.get('comics.txt', function(data) { 
    array = data.split(","); 
    for(var i = 0; i < array.length; i++) 
    { 
     var $page = array[i]; 
     $.ajax({ 
      url: 'your/server/url.php?page=' + $page, 
      success: function(data) { 
       alert(data); 
      } 
     }); 
    } 
}); 

your/server/url.php peut obtenir la page pour vous ...

+0

Merci! Existe-t-il un moyen javascript pour récupérer les URL étrangères? – codersarepeople

+0

voir les modifications sur mon message ... – Reigel

0

Vous ne pouvez pas faire des demandes à d'autres domaines à partir du navigateur de votre client. C'est un énorme risque de sécurité. Ce code fonctionnera si les URL dans le fichier texte sont sur le même domaine que le javascript est en cours d'exécution.

0

Vous pouvez effectuer un script intersite en ajoutant dynamiquement un élément de script au DOM avec l'attribut src pointant vers où vous voulez; Tant que tout ce qui est référencé dans src renvoie JavaScript (protip: exécute une fonction prédéfinie à la fin du XSS pour un comportement de type AJAX), cela devrait fonctionner.

Site 1:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('body').append($("<script>").attr('src', "http://mydomain.com/xss.js")); 
}); 

function alerty (thing) { 
    alert(thing); 
} 
</script> 

Site 2 (xss.js):

var mystring = "hello"; 

if (typeof(alerty) != "undefined") { 
    alerty(mystring); 
} 

Il est évident que l'URL ne doit pas être un fichier plat - il pourrait être JavaScript qui est construit par PHP basé sur les requêtes GET dans l'URL. Cela présume également que vous avez le contrôle des données distantes, ce qui n'est pas le cas.