2011-03-11 8 views
11

que estoy tratando de hacer mi edición en línea que ser dinámico por lo que sólo dependerá de algunos atributos Data- de mi marcado Así que aquí está el código de momento:¿Cómo se hace que la clave de datos ajax sea dinámica en 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' 
    } 
) 

quiero el nombre en regression_test_environment [nombre] para ser editableField.attr ('data-column-name') pero siempre falla en la compilación porque sigue tomando la clave como una cadena. Traté de hacer una variable después de la asignación de variable de campo editable y construir la cadena como una variable diferente, pero no quiere evaluar la tecla como una función.

¿Hay alguna manera de hacerlo? ¿o estoy atrapado en la creación de una llamada .editable por separado para cada uno de mis campos editables?

Respuesta

14

Usted puede tratar de esta manera:

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

son los datos () método disponible en ie7? tuve la impresión de que necesitabas attr ("data-whatever") para que fuera accesible, es decir? – corroded

+1

hice atributos, pero la idea general funcionó. gracias hombre. es extraño, creo que lo he intentado hace un rato, pero no pude hacerlo funcionar. gracias de todos modos – corroded

14

mejor, la respuesta menos confuso:

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

$.ajax({ 
    data: data 
}); 
0

Lo mejor es pasar valores dinámicos serializando que:

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

Esto no ayudará si estoy enviando una sola entrada que no está en un formulario o en una de muchas partes de un formulario –

Cuestiones relacionadas