我想发送带有特殊参数的请求,如下面列出的示例。但不幸的是,这个脚本只发送id。我如何传输嵌套的JSON?
new Ajax.Request("/specials/update_users_specials", {
method: 'post',
parameters: {
id: '1',
data: {
data_one: '2',
data_two: '3'
}
},
onSuccess:function(){}
});
UPD。
我试过了
var parameters = {};
$A(rows).each(function(d){
parameters[d.dataset.userId] = d.value;
});
params={};
params['data']=parameters;
params['part']=45;
不行。 我试过了
var parameters_json = eval("(" +JSON.stringify(params) + ")");
不行。 现在我已经尝试了
$H({ id: '1', data: { data_one: '2', data_two: '3' } })
同样的结果。
UPD。
我正在使用rails,我的解决方案是:
var parameters = {};
$A(rows).each(function(d){
parameters['users[' + d.dataset.userId + ']'] = d.value;
});
parameters['part_id']=id;
答案 0 :(得分:2)
从手册http://www.prototypejs.org/api/ajax/options:
parameters''请求的参数,将被编码到“get”方法的URL中,或者编码到其他方法的请求主体中。这可以作为URL编码的字符串或任何Hash兼容的对象(基本上任何东西)提供,其属性表示参数。“
关于哈希,http://www.prototypejs.org/api/hash:
构造Hash实例有两种方法:第一种是使用new关键字的常规JavaScript对象实例化,第二种是使用$H函数。将纯JavaScript对象或Hash传递给其中任何一个都会克隆它,保持原始对象不变。
所以,用JSON创建一个Hash,你应该很好。
<强>更新强>
更多来自他们的页面(自从我自己使用原型以来很久以前)http://www.prototypejs.org/learn/introduction-to-ajax
new Ajax.Request('/some_url', {
method: 'get',
parameters: {company: 'example', limit: 12}
});
参数作为哈希(首选)或由&符号分隔的一对键值对传递(如company = example&amp; limit = 12)。
因此它不理解多维哈希,只是键值对。
但是,我确实发现this snippet of code at Google groups可能会帮助你。