Присоединение к нотации JSON? - PullRequest
2 голосов
/ 26 мая 2009

У меня есть следующий объект JSON:

new Ajax.Request(url, {
   method: 'post',
   contentType: "application/x-www-form-urlencoded",
   parameters: {
          "javax.faces.ViewState": encodedViewState,
          "client-id": options._clientId,
          "component-value": options._componentValue
   }
});

Теперь я хотел бы иметь возможность добавлять объект "Параметры" программно, но я не уверен, как бы я это сделал на самом деле.

Ответы [ 4 ]

4 голосов
/ 26 мая 2009

вы можете просто присвоить ему. Но вы можете сделать это до создания запроса.

var parameters = {
      "javax.faces.ViewState": encodedViewState,
      "client-id": options._clientId,
      "component-value": options._componentValue
}
parameters.foo = 'bar';

var myAjax = new Ajax.Request(url, {
    method: 'post',
    contentType: "application/x-www-form-urlencoded",
    parameters: parameters
});
3 голосов
/ 26 мая 2009

Предположим, что объект JSON назван как obj в функции Javascript Ajax.Request. Теперь вы можете добавить к объекту параметров, как это:

obj['parameters']['someproperty'] = 'somevalue';

Надеюсь, это поможет

2 голосов
/ 26 мая 2009

Вы не можете добавить к нему после вызова new , потому что Prototype автоматически отправляет и начинает обработку запроса Ajax при создании, вместо этого сделайте что-то подобное, если вам нужно изменить объект параметров:

var params = {
      "javax.faces.ViewState": encodedViewState,
      "client-id": options._clientId,
      "component-value": options._componentValue
      // Either add your additional properties here as:
      // propertyName : propertyValue
};
// Or add your properties here as:
// params.propertyName = propertyValue;
new Ajax.Request(url, {

method: 'post',

contentType: "application/x-www-form-urlencoded",

parameters: params
});
0 голосов
/ 24 марта 2011

Вот решение, которое я использовал для добавления к существующему атрибуту data объекта JSON, но мне нужно было, чтобы он был достаточно универсальным для обработки различных пар ключ-значение. Вот то, что я создал на основе этого поста, который, кажется, работает для меня.

doAction : function(mData){
    this.data = mData;
    this.appendData = function(mDataToAppend){
        var jsonStrAr = JSON.stringify(mDataToAppend).replace('{','').replace('}','').split('","');
        for(var v = 0; v < jsonStrAr.length; v++){
            var m = jsonStrAr[v].split(':');
            this.data[m[0].replace(/"/g,'')] = m[1].replace(/"/g,'');
        }
    }
}

В результате получается один JSON-объект с n для множества атрибутов, который затем можно отправить на сервер с помощью команды JSON.stringify() в запросе ajax. Я все еще чувствую себя комфортно / размышляю с JSON, так что, возможно, есть лучший способ сделать это - в этом случае я весь слух.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...