Как вы делаете динамический ключ данных 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'), но оно всегда терпит неудачу при компиляции, потому что он продолжает брать ключ в виде строки. Я попытался сделать переменную после редактирования изменяемой переменной поля и построить строку как другую переменную, но она не хочет оценивать ключ как функцию.
Есть ли способ сделать это? или я застрял в создании отдельного целевого вызова для каждого из моих редактируемых полей?
Ответы
Ответ 1
Вы можете попробовать следующее:
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);
}
});
Ответ 2
Лучше, менее запутанный ответ:
var data = {};
data[thisField] = $(this).text();
$.ajax({
data: data
});
Ответ 3
Лучше всего передавать динамические значения, сериализируя его:
var data = $('#formid').serialize(); // serialize all the data in the form
$.ajax({
url: 'test.php', // PHP скрипт to retern json encoded string
data: data, // serialized data to send on server
...
});