2010-08-25 4 views
0

Je suis relativement nouveau JavaScript et un problème que j'espère que votre peut aiderjQuery, affecter le texte td à une variable et l'afficher

Ce que je suis en train de faire est ce

$("tr:not(:first-child)").each(function(){ 
          var sitename = $("this" + "td:nth-child(1)").text(); 
          var type= $("this" + "td:nth-child(2)").text(); 
          var address= $("this" + "td:nth-child(3)").text(); 
          var city= $("this" + "td:nth-child(4)").text(); 
          var lat= $("this" + "td:nth-child(5)").text(); 
          var long= $("this" + "td:nth-child(6)").text(); 
          var ftime= $("this" + "td:nth-child(7)").text(); 
          $.post('./watchdog.php',{ oadata: sitename}); 
        }).end().remove(); 

Je suis sélectionner le "tr" dans une table sauf la première qui contient "th". Ensuite, je suis juste en train de dépouiller le td et d'assigner la valeur du texte à la variable. À la fin, je poste ces données sur un script PHP qui l'insère dans une base de données MySQL. le problème est que je continue d'obtenir la valeur NULL dans la base de données.

Voici ma table comme produit dans le code HTML

Site Name Type Address City Lat Long Fault Time 
ISB056 Spur Opposite Plot No. 435, Sector I-10/4 Islamabad 73.04393 33.64677 12:02 PM 
ISB078 Spur SEECS NUST H-12 Islamabad Islamabad 72.990044 33.64246 12:02 PM 

Répondre

0

Ce

$("this" + "td:nth-child(1)").text() 

génère le sélecteur thistd:nth-child(1) qui n'a pas de sens du tout. Je pense que vous voulez:

$(this).find("td:nth-child(1)").text() 

Mais il serait plus simple de prendre un tableau avec par exemple.

var data = $(this).children('td').map(function() { 
       return $(this).text(); 
      }).get(); 

puis envoyer les données comme

$.post('./watchdog.php',{ sitename: data[0], type: data[1],...}); 
+0

Merci la fonction de carte a fonctionné comme un charme et réduit la taille du code et ... –

0

Vous utilisez 'this' mais ne dois pas this retirer vos citations afin.

Vous devez également utiliser des classes.

<tr class="site"> 
    <td class="sitename">...</td> 
    ... 
</tr> 

Cela rendra votre code plus facile à lire et à déboguer:

$("tr.site").each(function(){ 
    var sitename = $(".sitename",this) 
}) 
Questions connexes