2017-02-23 1 views
0

Ich habe eine Form, die ich über Ajax zu einer PHP-Funktion wie so vorlege:Serialized Formulardaten über Ajax liefert nur einen Buchstaben ("r")

var formData = $(form).serialize(); 
    $.ajax({ 
     type : 'post', 
     dataType : 'json', 
     url : myAjax.ajaxurl, //we can use this value because in our php file we used wp_localize_script 
     context:this, 
     data : {action: 'tps_save_rental_details', formData:formData }, 
     success: function(response) { 
      alert (response.testing); 
     } 
    }); 

Ich dachte, dass durch die Verwendung .serialize() es würde die Formulardaten in json Form übergeben und dann konnte ich es in meinem pHP-Funktion verwenden, etwa so:

$formData = $_REQUEST['formData']; 

$rentalType = $formData['rentalType']; 

$result['testing'] = $rentalType; 

(Miete Typ ist der Name/id des ersten Texteingabefeld)

Aber wenn Ich warne den zurückgegebenen Wert von $ result ['t esting '] in meiner Ajax-Erfolgsfunktion bekomme ich nur ein Zeichen, den Buchstaben "r", der nicht einmal im Wert dieses Feldes erscheint (was "Klassenerziehung" ist).

Ist dies der beste Weg, um Eingabewerte über Ajax zu übergeben? Wenn ja, was könnte ich hier falsch machen?

Antwort

1

Die serialize-Methode nimmt nur die Formularelemente und fügt sie in Zeichenfolgenform ein. "varname=val&var2=val2"

Sie können diese Werte in PHP wie erhalten:

$params = array(); 
parse_str($_GET, $params); 

Spezifisch für den Fall des OP:

$formData = array(); 
parse_str($_REQUEST['formData'], $formData); 
$result['testing'] = $formData['rentalType']; 
+0

Aha! Das macht Sinn, ich nahm an, dass serialisieren ein anderes Format ausspucken. – Eckstein

Verwandte Themen