你如何在jquery中使ajax数据键动态化?

时间:2011-03-11 08:23:36

标签: ajax jquery

我正在尝试使我的内联编辑变为动态,因此它只取决于我的标记中的一些数据属性,所以这里是现在的代码:

$(".inline-edit").editable(
  function(value, settings) {
    var editableField = $(this);

    $.ajax({
          type: 'PUT',
          url: editableField.attr('data-href'),
          dataType: 'html',
          success: function(html) {
            editableField.parents('.replaceable').replaceWith(html);
          },
          data: { 'regression_test_environment[name]' : value }
        });
        return(value);
  },
  {
    event: 'click',
    width: '80%',
    height: '20',
    submit : 'OK'
  }
)

我希望regression_test_environment [name]中的名称是editableField.attr('data-column-name'),但它总是在编译时失败,因为它一直将键作为字符串。我尝试在可编辑的字段变量赋值后创建一个变量,并将字符串构建为另一个变量,但它不想将该键作为函数进行求值。

有办法做到这一点吗?还是我坚持为每个可编辑字段创建一个单独的.editable调用?

3 个答案:

答案 0 :(得分:18)

您可以尝试这样:

var name = editableField.data('column-name');
var values = { };
values['regression_test_environment[' + name + ']'] = value;

$.ajax({
    type: 'PUT',
    url: editableField.data('href'),
    dataType: 'html',
    data: values,
    success: function(html) {
        editableField.parents('.replaceable').replaceWith(html);
    }
});

答案 1 :(得分:17)

更好,不那么混乱的答案:

var data = {};
data[thisField] = $(this).text();

$.ajax({
    data: data
});

答案 2 :(得分:0)

最好通过序列化来传递动态值:

    var data = $('#formid').serialize(); // serialize all the data in the form 
    $.ajax({
    url: 'test.php', // php script to retern json encoded string
    data: data,  // serialized data to send on server
    ...
    });