2016-04-22 8 views
2

Ich habe ein Problem, wenn ich Datenformat serialisieren möchte.Wie kann ich Daten senden?

Hier ist der Code. Ich habe eine page1.php, die das Formular enthält. Und wenn das Formular über AJAX gesendet wurde, erhalte ich die Formulardaten und sende sie dann an page2.php.

Das Problem tritt auf, wenn versucht wird, das Dateifeld zu serialisieren.

page1.php (enthaltend die Form)

$(document).ready(function(){ 
    $("#enviar").click(function(e){ 
     e.preventDefault(); 
      $.ajax({ 
       type: "POST", 
       url: "processar_updateUser.php", 
       data: $("form").serialize(), 
       success: function(data){ 
        alert(data); 
       } 
      }); 
     return false; 
    }); 
}); 

page2.php (Verarbeitung der Formdaten)

<?php 
    $personal_name = addslashes(htmlentities($_POST['personalname'])); 
    $name   = addslashes(htmlentities($_POST['name'])); 
    $surname  = addslashes(htmlentities($_POST['surname'])); 
    $concatnom  = $name.".".$surname; 
    $password  = addslashes(htmlentities($_POST['password'])); 
    $adegree  = addslashes(htmlentities($_POST['adegree'])); 
    $initials  = addslashes(htmlentities($_POST['initials'])); 
    $n    = substr($name,0,1); 
    $c    = substr($surname,0,1); 
    $initials  = $n.$c; 
    $email   = addslashes(htmlentities($_POST['email']));// que sigui [email protected]"+cadena+.+cadena 
    $telephone  = addslashes(htmlentities($_POST['telephone'])); //numero y nomes 9 
    $signature  = addslashes(htmlentities($_FILES['signature']['name']));//i have used $_POST, but dind't work 
?> 
+0

Verwenden Sie die [integrierten Funktionen] von PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html), um mit der Passwortsicherheit umzugehen. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie [Passwörter nicht umgehen] (http://stackoverflow.com/q/36628418/1011527) oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+0

Wo ist Ihre Formularmarkierung? –

+0

Welches Problem haben Sie mit der Serialisierung? –

Antwort

0

Dieses versuchen (Ersetzt JQuery Selektoren entsprechend Ihrer html):

var formData = new FormData(); 
formData.append('personalname', $("#personalname").val()); 
formData.append('name', $("#name").val()); 
formData.append('surname', $("#surname").val()); 
formData.append('password', $("#password").val()); 
formData.append('adegree', $("#adegree").val()); 
formData.append('initials', $("#initials").val()); 
formData.append('email', $("#email").val()); 
formData.append('telephone', $("#telephone").val()); 
formData.append('signature', $('#signature')[0].files[0]); 

$(document).ready(function(){ 
    $("#enviar").click(function(e){ 
     e.preventDefault(); 
      $.ajax({ 
       type: "POST", 
       url: "processar_updateUser.php", 
       data: formData, 
       success: function(data){ 
        alert(data); 
       } 
      }); 
     return false; 
    }); 
}); 

Das kann mühsam sein, aber es ist, wie ich es geschafft habe, Bilder an das Backend

zu senden

Die Methode $('#signature') gibt ein JQuery-Eingabeobjekt zurück.

Dies: $('#signature')[0] gibt das HTML-Eingabe-Tag zurück.

Dies: $('#signature')[0].files Geben Sie ein JQuery-Objekt zurück, das alle von Ihnen ausgewählten Dateien enthält.

Und schließlich folgt aus: $('#signature')[0].files[0] wird die erste Datei in der JQuery-Objekt zurück ...

Ich nehme an, Sie nur eine Datei akzeptieren ... Wenn nicht, Sie formData jede Datei gespeichert anhängen müssen in $('#signature')[0].files


Hoffe diese Hilfe.

Grüße

+0

Dank für Ihre Antwort zu verwenden. Mit diesem Teil des Codes: '$ ('# signature') [0] .files [0]', erhalte ich den Namen der ersten Datei wie '$ _FILES ['signature'] ['name'] ', also wie kann ich auch den tmp_name wie '$ _FILES ['signature'] ['tmp_name']' or size..etc – riztak

+0

abrufen Dieses Stück Code: '$ ('# signature') [0] .files [0 ] 'können Sie die Datei senden, wie Sie Standard-POST (nicht AJAX) verwendet haben ... Hat es funktioniert? –

0

Ich hatte das gleiche Problem vor einiger Zeit. Ich verwendete dieses Plugin jQuery Form Plugin für gemischte Formulare - Daten plus Dateien, oder in diesem Fall blueimp aber dieses nur für Datei-Upload.

Ich benutze sie sehr und sie funktionieren wie ein Charme und sind einfach zu integrieren.

Hoffe, das wird helfen.

Verwandte Themen