Bien le bonjour !

J'aurais un souci avec mon code que voici :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
echo '<span class="adresseIP" id="adresseIP_'.$i.'">'. $ip .'</span>';
echo '<p id="p_localisation_HostIP_'.$i.'" ></p>;

Code jquery : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(document).ready(initialiser_Localisation_API);
function initialiser_Localisation_API(){
    $.each($(".adresseIP"),traiterLocalisationIP)
}
function traiterLocalisationIP(donnees){
    var adresseIP = $("#"+donnees.id).text();
    var separation = donnees.id.split('_');
    var indice = separation[1];
    $.getJSON("http://api.hostip.info/get_json.php?ip="+adresseIP,analyserDonneesHostIp);
}
function analyserDonneesHostIp(donnees){
    $("#p_localisation_HostIP_1").append("<ul>");
    liste = $("#p_localisation_HostIP_1 ul");
    liste.append('<li>Pays : '+donnees.country_name+'</li>');
    liste.append('<li>Ville : '+donnees.city+'</li>');
}

$i étant l'incrément dans la boucle et $ip un string contenant une adresse IP


Voilà mon problème, je voulais :

1) Faire passer ma variable indice dans la fonction d'en dessous (pas de globales, c'est asynchrone et toujours 4)
2) Ne plus balader de $i ou indice dans le code et faire tout en fonction de currenttargets ou je ne sais quoi dans le style...
3) Faire un truc joli directement dans le PHP pour éviter d'avoir ce document.ready mais plutôt un appel direct lors de la création de la balise p


Quelqu'un dans un autre forum a posté ça (j'ai un peu bidouillé pour voir ce que ça faisait, mais je n'ai rien touché à la partie qui ne fonctionne pas):

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
remplacer id="adresseIP_'.$i.'" par data-naddresseip="'.$i.'"

Code jquery : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(document).ready(function () {
    $('.adresseIP').each(function (key, item) {
        console.log(item); // Objet span
        console.log($(item).data('nadresseip')); //N° adresse IP
        console.log($(item).text()); //adresse IP
 
        $.ajax(function () {
            url: 'http://api.hostip.info/get_json.php', 
            dataType: 'json',
            data: {ip: $(item).text()},
            success: function (json) {
                $("#p_localisation_HostIP_"+$(item).data('nadresseip')).append("<ul>");
                liste = $("#p_localisation_HostIP_"+$(item).data('nadresseip')+" ul");
                liste.append('<li>Pays : '+json.country_name+'</li>');
                liste.append('<li>Ville : '+json.city+'</li>');
            }
        });
    });
});

Le logiciel m'indique que la virgule de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
url: 'http://api.hostip.info/get_json.php',
devrait être un point-virgule, et ça ne marche pas.

Que dois-je faire pour faire fonctionner ce code ? Dois-je inclure quelque chose en plus pour avoir accès au $.ajax ? Ou sinon, avez vous d'autres/de meilleures pistes ?

Au passage, c'est quoi la différence entre l'ajax et le javascript ? Ce sont des habitudes à prendre en Javascript/JSON ou c'est bien plus que ça ?

Merci d'avance !