2012-10-17 5 views
1

J'ai une petite fonction qui prend une liste dynamique de zones de texte avec des URL et l'envoie au serveur. J'essaye de charger les URLs dans un tableau puis de les transmettre dans un objet JSON. Le problème est, quand j'arrive à ce moment-là dans le code, je continue à obtenir l'erreur:javascript Variable indéfinie/tableau

TypeError: url_data[this_url] is undefined 
http://localhost/2011/admin/public/assets/js/tssol.ui.js 
Line 196 

Voici le bloc qui retourne cette erreur:

$("#dialogEditor").dialog('option', 'buttons', {'Save' : function() { 
    /* Define variables */ 
    var url_data = new Array(); 
    var this_url = 0; 

    /* I've tried this with and without explicitly passing the vars... */ 
    $("#website_editor input").each(function(url_data, this_url) { 
     var id =$(this).attr('name').match(/\d+/); 
     var url=$(this).val(); 

     /* Test the varible each iteration */ 
     console.log("this_url: " + this_url + " id: " + id + " url: " + url); 

    /* Line 196 */ url_data[this_url].id = id; 
     url_data[this_url].url = url; 

     this_url++; 
}); 


data = JSON.stringify(url_data); 
//data = url_data; 
//console.log(data); 

$.ajax({ 
    url: 'ajax.websites.php', 
    dataType: 'json', 
    data: { 
     action: "update_resort", 
     ResortId: resort, 
     data: data 
    } 
}); 

$(this).dialog("close"); 
}, 
'Cancel': function(){$(this).dialog("close"); 
}}); 
}, 

Désolé au sujet de la mise en forme

+0

Qu'essayez-vous d'obtenir? 'this_url' est l'élément d'entrée dans' .each', donc vous ne pouvez pas l'utiliser comme une clé dans le tableau. – pimvdb

+0

Si 'url_data [this_url]' n'existe pas encore, vous ne pouvez pas mettre la propriété 'id' dessus ... vous devez d'abord assigner un objet à' url_data [this_url] '. –

Répondre

3

Je ferais ceci:

url_data[this_url] = { 
    id: id, 
    url: url 
} 
+0

Ya c'est exactement ce dont j'avais besoin. Merci beaucoup! – guyfromfl