JQuery:使用Javascript变量中的参数发送POST请求

时间:2016-09-13 12:11:26

标签: javascript jquery post

我有以下JQuery脚本。我想使用函数中收到的参数向服务器发送POST请求。假设keyuserIdvalue1234。我怎样才能做到这一点?以下代码发送{ key: 1234 }而不是{ userId: 1234 }

function saveElement(key, value) {
  $.post(SERVER_ROOT + '/dosomething', { key: value } )
    .done(function( data ) {
        alert('done!');
  });
}

4 个答案:

答案 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!');
  });
}