2016-03-19 3 views
0

Ich versuche Bild zu speichern Ajax .und Gabe von Daten durch Formdata() aber in PHP-Datei kann ich nicht zum Abrufen von Daten oder Bildnamen bitte helfen Sie mir hier mein CodeDaten retrive nicht durch Formdata

<form name='signup' id='signup'> 
    <div class="row"> 
     <!--<form id="uploadimage" action="" method="post" enctype="multipart/form-data">--> 
     <div id="selectImage"> 
      <label>Select Image</label> 
      <div id="image_preview"> 
       <img id="previewing" src="uploaded_files/259700.png" height="150" width="150" /> 
      </div> 
      <input type="file" name="file" id="file" required /> 
      <!--<input type="submit" value="Upload" class="submit" />--> 
     </div> 
     <!--</form>--> 
    </div> 
    <div class='row'> 
     <p> 
      <label for='username'>First name</label> 
      <input type='text' name='firstname' id='firstname' value='' placeholder='Enter First name' /> 
     </p> 
    </div> 
    <div class='row'> 
     <p> 
      <label for='lastname'>Last name</label> 
      <input type='text' name='lastname' id='lastname' value='' placeholder='Enter Last name' /> 
     </p> 
    </div> 
    <div class='row'> 
     <p> 
      <label for='email'>Email</label> 
      <input type='text' name='email' id='email' value='' placeholder='Enter Email' /> 
     </p> 
    </div> 
    <div class='row'> 
     <p> 
      <label for='phno'>Phno.</label> 
      <input type='text' name='phno' id='phno' maxlength="10" value='' placeholder='Enter ph no' /> 
     </p> 

    </div> 
    <!--<input type="hidden" name="actionfunction" value="saveData" />--> 
    <input type="hidden" name="actionfunction" value="saveData" /> 
    <div class='row'> 
     <input type='button' id='formsubmit' class='submit' value='Submit' /> 
     <!--<input type='submit' id='formsubmit' class='submit' value='Submit' />--> 
    </div> 
</form> 

hier ist mein ajax-Skript-Code:

$("#signup").on('submit', (function() { 
    var fname = $("#firstname"); 
    var lname = $("#lastname"); 
    var email = $("#email"); 
    var phno = $("#phno"); 
    if (validateform(fname, lname, email, phno)) { 
    var formdata = new FormData(this); 
    $.ajax({ 
     url: "DbManipute.php", 
     type: "POST", 
     data: formdata, 
     processdata: false, 
     cache: false, 
     contentType: false, 
     success: function(response) { 
     //alert(response); 
     if (response == 'added') { 
      $("#show_user").trigger("click"); 
      getusers(); 
      $("#msg").html("user added"); 
     } 
     }, 
    }); 
    } 
}); 

Und hier ist mein "DbManipute.php" Code:

function saveData($data,$con){ 
    $imgfile=$_FILES['file']['name']; 
    $fname = $data['firstname']; 
    $lname = $data['lastname']; 
    $email = $data['email']; 
    $phno = $data['phno']; 
    //$fname = $_POST['firstname']; 
    //$lname = $_POST['lastname']; 
    //$email = $_POST['email']; 
    //$phno = $_POST['phno']; 
    $sql = "insert into tbl_employees(emp_name,emp_lname,emp_email,emp_phno,emp_pic) values('$fname','$lname','$email','$phno','$imgfile')"; 
    if($con->query($sql)){ 
     echo "added"; 
    } else { 
     echo "error"; 
    } 
} 

Ich habe keinen Fehler und Daten auch nicht eingefügt. wenn ich Bildupload entfernen und serialize-Methode verwenden, dann werden Daten erfolgreich gespeichert, aber in serialize Methode Bild Dateiname kann nicht abrufen, bitte helfen Sie mir diesbezüglich.

Antwort

0

Sie müssen die type="file" separat anhängen.

$("#signup").on('submit', (function() { 
    var fname = $("#firstname"); 
    var lname = $("#lastname"); 
    var email = $("#email"); 
    var phno = $("#phno"); 
    if (validateform(fname, lname, email, phno)) { 
    var formdata = new FormData(this); 
    formdata.append('file', $("input[name='file']")[0].files[0]); 
    $.ajax({ 
     url: "DbManipute.php", 
     type: "POST", 
     data: formdata, 
     processdata: false, 
     cache: false, 
     contentType: false, 
     success: function(response) { 
     //alert(response); 
     if (response == 'added') { 
      $("#show_user").trigger("click"); 
      getusers(); 
      $("#msg").html("user added"); 
     } 
     }, 
    }); 
    } 
}); 
+0

Ich habe Zeile nach Ihrem Vorschlag hinzugefügt. Aber noch Daten nicht abrufen. – suh

+0

@suh versuchen '$ .trim (Antwort) ==" hinzugefügt "in der Bedingung. – RRK

+0

Vielen Dank für Ihre Vorschläge, aber es funktioniert immer noch nicht. – suh

0

Ihr clientseitiger Fehler wird auf der Seite nicht wie php angezeigt. Sie haben einige Fehler in Ihrem JavaScript-Code. Sie haben eine geschlossene Klammer am Ende js Code verpasst: });

Wenn Sie Chrome oder Firefox-Browser verwenden, drücken Sie Taste F12 und Konsole und werden Sie Fehler Ihre js angezeigt zeigen.

Tipp: Sie können Ihr Projekt debuggen, indem Sie beliebige Variablen in Ihrem Code drucken. Versuchen Sie beispielsweise, in Ihrem js-Code console.log('test'); zu verwenden, um zu überprüfen, ob Ihr Ajax-Befehl funktioniert. console.log() wird in der Konsolenbox des Browsers gedruckt.

Als ich das in Ihrem Code getan habe, habe ich verstanden, dass Ihr Code überhaupt nicht läuft. Da Sie Ihren Code so eingerichtet haben, dass er unter ausgeführt wird, geben Sie ein, und Sie haben keine Schaltfläche zum Übermitteln. Dann müssen Sie die type="submit" Ihres Knopfes ändern.

Danach müssen Sie Formular verhindern, indem Sie das Formular mit Browser senden und Browser mitteilen, dass Sie Ihren JS-Code ausführen möchten. Dafür benötigen Sie benötigen Standardaktion für Formular Ereignis wie dies zu verhindern:

$("#signup").on('submit', (function(evt) { 
    evt.preventDefault(); 

Ein weiterer Tipp ist, dass Ihr PHP-Code in einer Funktion ist, die nie aufgerufen wird. Sie müssen Ihre PHP-Funktion in Ihrer PHP-Datei aufrufen, oder Sie sollten Ihre Codes außer Funktion setzen.

Versuchen Sie, Ihren Code so zu ändern. Dies sollte Ihren Code funktionieren lassen. Und um zu überprüfen, ob Ihre Ajax-Anfrage funktioniert, versuchen Sie, etwas in Ihrem Code und in Ihrem js-Code die Antwort zu alarmieren.

Edit # 1 Eine weitere Sache ist zu berücksichtigen, dass für den Fall, dass Sie Dateien mit Ajax hochladen möchten, können Sie die Daten nicht wie FormData(this) einstellen. Zum Zweck des Ajax-Uploads sollten Sie ein Objekt von FormData (new FormData()) anlegen und die Daten separat anhängen. (wie Rejith R Krishnan sagte).