2017-07-26 2 views
1

Ich glaube, ich mache irgendwo einen sehr grundlegenden Fehler.Übertragung von Formulardaten über Json

Ich habe ein Formular, das ich auf eine PHP-Seite übertragen möchte. Ich möchte auch einen Parameter mit dieser Information senden, also habe ich ein grundlegendes 2D-Array erstellt: $ fd ['api'] -> den Parameter als String $ fd ['body'] -> mit den Formulardaten

Ich habe Schwierigkeiten, dieses Array "$ fd" als JSON-String zu übertragen und glaube, dass ich die JavaScript-Syntax irgendwo falsch verwende, da ich Javascript oft nicht verwende.

Jede Hilfe wäre willkommen.

function admin_statistics_form_send(){ 
    var fd = [] 
    fd['api'] = "refresh_all" 
    fd['body'] = new FormData(document.getElementById("admin_statistics_form")) 
    var jsonstring = fd 
    console.log(jsonstring) 
    $.ajax({ 
    async: true, 
    beforeSend: function(){ 
    }, 
    url: "admin_statistics_api.php", 
    type: "POST", 
    data: jsonstring, 
    dataType: "json", 
    processData: false, // tell jQuery not to process the data 
    contentType: false, // tell jQuery not to set contentType 
    success: function (data) { 
     console.log(data) 
    }, 
    error: function(data) { 
     console.log(data) 
    } 
    }) 
} 
+0

Für den Anfang versuchen 'var fd = {}' –

Antwort

2

Sie möchten nur das FormData-Objekt senden. Um andere Schlüssel/Wert-Paare Sie append zu diesem Objekt:

function admin_statistics_form_send(){ 
    var fd = new FormData($("#admin_statistics_form")[0]); 
    fd.append('api',"refresh_all"); 


    $.ajax({ 
    //async: true, // redundant since it is default and should never use `false` 
    beforeSend: function(){ 
    }, 
    url: "admin_statistics_api.php", 
    type: "POST", 
    data: fd, 
    dataType: "json", 
    processData: false, // tell jQuery not to process the data 
    contentType: false, // tell jQuery not to set contentType 
    success: function (data) { 
     console.log(data) 
    }, 
    error: function(data) { 
     console.log(data) 
    } 
    }) 
} 
+0

scheint funktioniert zu haben. Also ist das FormData-Objekt bereits serialisiert und kann als Json übergeben werden, ohne dass ich es stringieren muss? –

+0

Nein, es ist nicht json ... der Browser wird es intern als formcodierte Daten serialisieren, so wie es bei einem Standardformular der Fall ist – charlietfl

Verwandte Themen