2009-08-13 7 views
1

J'essaie d'analyser les lignes d'un tableau que je génère en utilisant Javascript en ajoutant des éléments dans un panier, puis en créant un objet json lorsque l'utilisateur enregistre l'ordre de tous les éléments et le transmet à un php script utilisant $.post dans jQuery.Génération d'un objet JSON

Le seul problème que j'ai est de comprendre les objets JSON et comment pousser plus d'éléments sur l'objet. Je reçois une erreur dans firebug en me disant que devices[i] est indéfini. Pas vraiment sûr de savoir comment faire autrement. Je pensais que c'était vraiment juste un tableau.

function Save() 
    { 
    var devices = new Object(); 
    var i = 0; 

$("#device_tbl tr:gt(0)").each(function(){ 
    var manufid = $(this).find("td").eq(0).find(".manuf_id").html(); 
    var modelid = $(this).find("td").eq(1).find(".model_id").html(); 
    var condition = $(this).find("td").eq(2).find("select").val(); 
    var carrier = $(this).find("td").eq(3).find("select").val(); 
    var imei = $(this).find("td").eq(4).find("input").val(); 
    var price = $(this).find("td").eq(5).html(); 
    alert(manufid+"\n"+modelid+"\n"+carrier+"\n"+imei+"\n"+price); 

    devices[i].manufid = manufid; 
    devices[i].modelid = modelid; 
    devices[i].carrier = carrier; 
    devices[i].imei = imei; 
    devices[i].price = price; 

    i++; 

    }); 
document.write(devices);  //just for debugging 


$("#final").show(); 
} 

Répondre

4

Vous avez actuellement des périphériques déclarés en tant qu'objet, mais vous les traitez comme un tableau.

Vous devez le déclarer en tant que tableau d'objets.

function Save() 
    { 
    var devices = new Array(); 
    var i = 0; 

$("#device_tbl tr:gt(0)").each(function(){ 
     var manufid = $(this).find("td").eq(0).find(".manuf_id").html(); 
     var modelid = $(this).find("td").eq(1).find(".model_id").html(); 
     var condition = $(this).find("td").eq(2).find("select").val(); 
     var carrier = $(this).find("td").eq(3).find("select").val(); 
     var imei = $(this).find("td").eq(4).find("input").val(); 
     var price = $(this).find("td").eq(5).html(); 
     alert(manufid+"\n"+modelid+"\n"+carrier+"\n"+imei+"\n"+price); 

     devices[i] = new Object(); 
     devices[i].manufid = manufid; 
     devices[i].modelid = modelid; 
     devices[i].carrier = carrier; 
     devices[i].imei = imei; 
     devices[i].price = price; 

     i++; 

     }); 
document.write(devices);   //just for debugging 


$("#final").show(); 
} 

ou quelque chose comme ça.

(Mise à jour pour le montrer dans votre code)

+0

Les "devices [i] = new Object();" la partie est critique, la déclarer comme un tableau est facultative – Mike

Questions connexes