Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 附加到JSON符号?_Javascript_Json - Fatal编程技术网

Javascript 附加到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

我有以下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
   }
});

现在,我希望能够以编程方式附加到“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'],属性查找都是动态的