2010-07-14 24 views
2

Cela fait des heures que je me bats avec ça. Il me manque évidemment quelque chose complètement.Problème de compréhension des tableaux multidimensionnels javascript

Je souhaite récupérer des valeurs dans des zones de texte TinyMCE, ainsi que des ID. Ensuite, postez-les via ajax sur le serveur.

jQuery 1.4 et bibliothèque JSON sont chargés

var send_data = []; 

    $('.contact_check').each(function (i, item) { 
     var this_id = $(item).attr('id'); 
     var msgbox = tinyMCE.get('contacts['+this_id+'][message]'); 
     var content = addslashes(msgbox.getContent()); 
     send_data[i]["id"] = this_id; 
     send_data[i]["content"] = escape(content); 
     }); 

    var encoded = JSON.stringify(send_data); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://localhost/test.php', 
     data: encoded, 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function(){alert('jay');} 
    }); 

Tout d'abord,

 send_data[i]["id"] = this_id; 
     send_data[i]["content"] = escape(content); 

ne semble pas fonctionner. Il dit send_data [i] indéfini. J'ai également essayé:

send_data[this_id] = escape(content); 

Cela ne semble pas fonctionner non plus. La chaîne JSON renvoie []. Qu'est-ce que je fais mal?

Répondre

3

Vous ne créez pas vraiment un tableau multidimensionnel. Vous faites un tableau d'objets. De toute façon, avant de pouvoir définir un attribut ou un élément de tableau de quelque chose à send_data[i], vous devez faire send_data[i]être quelque chose.

send_data[i] = {}; 
send_data[i]['id'] = this_id; 
send_data[i]['content'] = escape(content); 

ou, mieux:

send_data[i] = { 
    id: this_id, 
    content: escape(content) 
}; 
0

Vous devez faire chaque send_data [i] un objet premier:

$('.contact_check').each(function (i, item) { 
    var this_id = $(item).attr('id'); 
    var msgbox = tinyMCE.get('contacts['+this_id+'][message]'); 
    var content = addslashes(msgbox.getContent()); 
    send_data[i] = {}; 
    send_data[i]["id"] = this_id; 
    send_data[i]["content"] = escape(content); 
    }); 
Questions connexes