2010-10-21 3 views
0

Comment attribuer dynamiquement une variable au contenu attr de dojo.xhrPost? Voici le code et une explication pour mon scénario:Comment attribuer dynamiquement une variable au contenu attr de dojo.xhrPost?

Code avec des valeurs codées en dur pour le contenu

dojo.xhrPost({ 
url: /esturl/, 
handleAs : "text", 
content : {INST1 : '{"0001" : "aa"}', 
      INST2 : '{"0002" : "bb"}', 
      INST3 : '{"0003" : "cc"}'} 
load : load(data), 
error : error 
}); 

Le nombre de INST dans le contenu attr peut être au minimum 1 et maximum 6, à partir de maintenant, je suis dur codant 3 paires là. Mais je veux avoir un var comme buildJason

var buildJson = function(){ 
} 

Et ce var will populate dynamic value to content attr. J'ai "0001" "aa" valeurs de

var element = dojo.query('input:checked'); 
element.id; 

Mais à chaque fois que des contrôles utilisateur différent boîte que selon les valeurs de sélection d'utilisateur pour attr de contenu devrait être complétée de manière dynamique, toute suggestion quant à la façon dont cela peut être réalisé?

Mise à jour

Après avoir utilisé l'approche suggérée par CastroXXL, je reçois le message suivant d'erreur sur Firebug.

missing : after property id 
var myContent = {};\n 

Des suggestions sur comment je peux y faire face?

Répondre

1

Pour créer un objet JSON, vous pouvez utiliser le code ci-dessous.

var buildJson = function (name, value){ 
    var myJson = {}; 

    myJson[name] = value; 

    return myJson; 
};//Forgot the semicolon. 

Un script qui mettrait cela ensemble pourrait ressembler à ce qui suit.

var myContent = {}; 
var count = 0; 

dojo.query("input:checked").forEach(function(input){ 
    myContent['INST' + count] = buildJson(input.id, input.value); 

    count++; 
}); 

dojo.xhrPost({ 
    url: /esturl/, 
    handleAs : "text", 
    content : myContent, 
    load : load(data), 
    error : error 
}); 

EDIT: Vous obtenez cette erreur lorsque vous faites quelque chose comme ce qui suit.

var test = { 
    var myContent = {}; 
}; 

Vous pouvez fermer l'objet JSON avant comme:

var test = {}; 
var myContent = {}; 

ou vous pouvez faire le travail de myCONTENT dans votre JSON comme:

var test = { 
    myContent:{} 
}; 
+0

Je reçois ': manquant après la propriété id var myContent = {}; \ n sur firebug après avoir utilisé l'approche que vous avez suggérée, je ne sais pas comment avancer, aucune suggestion CastroXXL – Rachel

+0

Cette erreur se produit généralement lorsque vous êtes déjà dans un objet JSON. C'est probablement le code juste avant cette ligne qui cause le problème. Pourriez-vous montrer cela? – CastroXXL

+0

Merci CastroXXL, j'ai réussi à le faire fonctionner. – Rachel

Questions connexes