我有以下JQuery脚本。我想使用函数中收到的参数向服务器发送POST请求。假设key
为userId
且value
为1234
。我怎样才能做到这一点?以下代码发送{ key: 1234 }
而不是{ userId: 1234 }
。
function saveElement(key, value) {
$.post(SERVER_ROOT + '/dosomething', { key: value } )
.done(function( data ) {
alert('done!');
});
}
答案 0 :(得分:3)
在ES5及更早版本中,您必须创建对象,然后使用括号表示法设置属性:
function saveElement(key, value) {
var params = {};
params[key] = value;
$.post(SERVER_ROOT + '/dosomething', params )
.done(function( data ) {
alert('done!');
});
}
在ES2015(“ES6”)及更高版本中,您可以使用计算属性表示法:
// REQUIRES ES2015+ SUPPORT
function saveElement(key, value) {
$.post(SERVER_ROOT + '/dosomething', {[key]: value} )
// -------------------------------------^---^
.done(function( data ) {
alert('done!');
});
}
答案 1 :(得分:2)
这应该这样做:
function saveElement(key, value) {
var dataToSend={};
dataToSend[key]=value;
$.post(SERVER_ROOT + '/dosomething', dataToSend)
.done(function( data ) {
alert('done!');
});
}
答案 2 :(得分:2)
如果您可以执行ES6,则可以使用[]
包装密钥来使用computed property names。 JS将评估该变量的值并将该值用作关键值。
function saveElement(key, value) {
$.post(SERVER_ROOT + '/dosomething', { [key]: value } )
.done(function( data ) {
alert('done!');
});
}
如果没有,则必须单独定义对象,并使用括号表示法添加属性。
function saveElement(key, value) {
var data = {};
data[key] = value;
$.post(SERVER_ROOT + '/dosomething', data )
.done(function( data ) {
alert('done!');
});
}
答案 3 :(得分:-1)
function saveElement(key, value) {
$.post(SERVER_ROOT + '/dosomething', { userId: value } )
.done(function( data ) {
alert('done!');
});
}