Javascript 附加到JSON符号?
我有以下JSON对象:Javascript 附加到JSON符号?,javascript,json,Javascript,Json,我有以下JSON对象: new Ajax.Request(url, { method: 'post', contentType: "application/x-www-form-urlencoded", parameters: { "javax.faces.ViewState": encodedViewState, "client-id": options._clientId, "component-value": o
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
}
});
现在,我希望能够以编程方式附加到“Parameters”对象,但我不确定我将如何实际做到这一点 您可以简单地分配给它。但您可能希望在创建请求之前执行此操作
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
});
在调用new之后不能追加到它,因为Prototype会在创建时自动发送并开始处理Ajax请求,如果需要更改parameters对象,请执行以下操作:
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
});
假设JSON对象在Ajax.Request Javascript函数中命名为obj。您现在可以向parameters对象添加如下内容:
obj['parameters']['someproperty'] = 'somevalue';
希望这能有所帮助,这里有一个解决方案,我用来附加到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,'');
}
}
}
doAction:函数(mData){
this.data=mData;
this.appendData=函数(MDataAppend){
var jsonStrAr=JSON.stringify(mDataToAppend).replace('{','').replace('}','').split('','');
对于(var v=0;v
结果是一个具有n到多个属性的单一JSON对象,然后可以通过ajax请求中的JSON.stringify()
命令将其发送到服务器。仍然对JSON感到满意/思考,因此可能有更好的方法来做到这一点-在这种情况下,我洗耳恭听。请注意:另一种方法是参数[“foo”]=“bar”。我更喜欢这种方式,因为parameters.foo不存在(还没有),而且这样做会让人觉得非常“违反”赋值:)除了它是完全相同的事情,并且您的方法需要在运行时而不是解析时进行解释(这意味着预处理的函数无法处理解释的值)err。。这有意义吗?点语法只是语法糖,它们是完全相同的东西,在这两种情况下解释都是运行时的。无论使用a.b还是['b'],属性查找都是动态的