Pregunta

Estoy tratando de enviar un par nombre: valor a un script php usando el objeto $ .post en jQuery donde tanto nombre y el valor son variables. He enviado a las variables de la consola en FF, así que sé que están siendo ajustadas correctamente, pero cuando veo las cabeceras de ser enviado, solamente se está evaluando la variable valor correctamente, el nombre está siendo enviado como una cadena literal de la variable nombre. Aquí está la función en su totalidad:

$(document).ready(function() {
  $('#formS form fieldset > input').blur(function() {
    if($(this).val()=='' && $(this).prev().is('img')) {
     $(this).prev().remove();
     return;
    }

    if((($(this).is('#formS form fieldset > input[id*=mail]')) ||
    ($(this).is('#formS form fieldset > input[id*=sername]'))) &&
    ($(this).val()!="")) {
      var email_field = $(this);
      if(!$(this).prev().is('img')){
      $('<img src="" alt="" style="width: 16px; height: 16px;" />').insertBefore(this);
      }
      var type = ($(this).is('input[id*=sername]'))?'username':'email';
      var value = $(this).val();
      $.post('checkemail.php5', {type:value}, function(data) {
                if(data == "free") {
         email_field.prev().attr('src','/images/greentick.png').attr('alt','available');
        } else if(data == "taken") {
         email_field.prev().attr('src','/images/redcross.png').attr('alt','taken');
        } else {
          console.log('hmmm'+data);
        }
        });
        }
        });
});

Por lo tanto, las cabeceras de ser enviado son la cadena literal Tipo , y cualquiera que sea valor se evalúa como. Alguien tiene alguna idea de por qué?

¿Fue útil?

Solución

Debido a la sintaxis {} toma un conjunto de nombre: valor, donde los nombres se convierten en propiedad en el objeto. Este es un literal y no puede ser una variable, como se ve. Utilice la siguiente:

var params = {};
params[type] = value;

y pasar params en lugar de {type: valor}

Otros consejos

No estoy seguro de cuál es su problema, no está tan claro para mí. No me importa mucho el conocimiento en php también pero es posible que desee probar de esta manera:

Tipo var = ($ (this) .is ( 'input [id * = sername]')) 'nombre de usuario': 'correo electrónico'; valor var = $ (this) .val (); datos var = tipo + "=" + valor;

$. Puesto ( 'checkemail.php5', los datos, la función (datos) {.......

Muy mejor,

exactamente lo que estaba buscando para Dark Falcon, gracias!

era difícil encontrar esta solución, por cierto. Asumo que la mayoría de la gente está serializar los datos del formulario y el envío de que a medida que el puesto parámetro, pero en algunos casos es agradable de usar nombre-variable => variable valor de emparejamiento, que me estaba volviendo loco ya que nada me trató cuando se utiliza el nombre como una variable se trabaja

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top