Как динамически назначить переменную для атрибута содержимого dojo.xhrPost? - PullRequest
0 голосов
/ 21 октября 2010

Как динамически назначить переменную для содержимого attr файла dojo.xhrPost?Ниже приведен код и некоторые пояснения для моего сценария:

Код с жестко закодированными значениями для содержимого

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

Количество INST в Content attr может быть минимум 1и максимум 6, на данный момент я жестко кодирую 3 пары там.Но я хочу иметь один var как buildJason

var buildJson = function (){
}

И этот var will populate dynamic value to content attr.У меня "0001" "aa" значения из

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

Но каждый раз, когда пользователь выбирает другой флажок, в зависимости от того, какие значения выбора пользователя для содержимого attr должны заполняться динамически, есть какие-либо предложения относительно того, как этого можно достичь?

Обновление

После использования подхода, предложенного CastroXXL, я получаю следующее сообщение об ошибке в firebug.

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

Есть предложения, как с этим справиться?

1 Ответ

1 голос
/ 21 октября 2010

Для создания объекта JSON вы можете использовать приведенный ниже код.

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

  myJson[name] = value;

  return myJson;
};//Forgot the semicolon. 

Сценарий, который соберет все это, может выглядеть следующим образом.

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
});

РЕДАКТИРОВАТЬ: Вы получаете этоошибка, когда вы делаете что-то вроде следующего.

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

Вы можете либо закрыть объект JSON до:

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

, либо вы можете заставить myContent работать в вашем JSON, например:

var test = {
  myContent:{}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...