Frage

Ich versuche, einen Namen: Wertpaar an ein PHP -Skript mit dem $ .post -Objekt in JQuery zu senden, bei dem sowohl Name als auch Wert Variablen sind. Ich habe die Variablen in FF an die Konsole gesendet, also weiß ich, dass sie korrekt eingestellt werden. Wenn ich jedoch die Sendungen der Header betrachte, wird nur die Wertvariable korrekt bewertet, der Name wird als wörtliche Zeichenfolge der Variablen gesendet Name. Hier ist die Funktion vollständig:

$(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);
        }
        });
        }
        });
});

Die Header, die gesendet werden, sind also die buchstäbliche Saite Typ, und was auch immer Wert bewertet. Hat jemand irgendwelche Ideen warum?

War es hilfreich?

Lösung

Weil die Syntax {} einen Namen nimmt: Wert, bei dem die Namen zur Eigenschaft des Objekts werden. Dies ist ein wörtlicher und kann, wie Sie sehen, keine Variable sein. Benutze das:

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

und übergeben Parameter anstelle von {Typ: value}

Andere Tipps

Ich bin mir nicht sicher, was Ihr Problem ist, es ist mir nicht so klar. Ich habe auch nicht viel Wissen in PHP, aber Sie möchten es vielleicht so versuchen:

var type = ($ (this) .is ('input [id*= sername]'))? 'Benutzername': 'E -Mail'; var value = $ (this) .val (); var data = type+"="+Wert;

$ .post ('checkemail.php5', Daten, Funktion (Daten) {.......

Allerbeste,

Genau das, was ich nach Dark Falcon suchte, danke!

Es war schwierig, diese Lösung zu finden, übrigens. Ich gehe davon aus, dass die meisten Menschen nur die Formulardaten serialisieren und diese als Post-Params senden, aber in einigen Fällen ist es schön, variable NAME => Variable-Wert-Paarung zu verwenden, was mich als nichts veranlasste, was ich bei Verwendung des Namens als Namen versuchte Variable funktionierte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top