2011-03-11 21 views
11

我试图让我的内联编辑是动态的,所以它会仅仅依靠从我的标记所以这里的一些数据 - 属性是代码现在:你如何让jquery中的ajax数据键动态化?

$(".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 [名]的名字要成为editableField.attr('data-column-name'),但它在编译时总是失败,因为它始终将密钥视为字符串。我尝试在可编辑的字段变量赋值之后创建一个变量,并将该字符串构建为不同的变量,但它不想将该键作为函数进行计算。

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

回答

14

你可以尝试这样的:

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); 
    } 
}); 
+0

是数据( )方法在ie7中可用?我有一个印象,你需要attr(“数据 - 哪一个”),它可以在ie访问吗? – corroded 2011-03-11 08:45:30

+1

我做了属性,但总体思路奏效。谢啦。它的奇怪,我想我已经尝试了一段时间,但不能使它的工作。无论如何感谢 – corroded 2011-03-11 08:48:06

14

更出色,更令人困惑的答案:

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

$.ajax({ 
    data: data 
}); 
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 
    ... 
    }); 
+0

如果我发送的单个输入不是表单或表单的许多部分之一,这将无济于事 – 2017-06-23 16:25:34

相关问题