2017-06-20 2 views
0

Ich habe diese FormFormdata keine Daten an PHP-Backend-Skript veröffentlichen

<form id="home" class="validate-form" method="post" enctype="multipart/form-data"> 
          <!-- Form Item --> 
          <div class="form-group"> 
           <label>How much money do you need? (USD)</label> 
           <div class="input-group"> 
            <div class="input-group-addon">USD</div> 
            <input id="moneyAmount" type="number" name="amount" class="form-control slider-control input-lg" value="100000" min="10000" max="1000000" data-slider="#moneySlider" required> 
           </div> 
           <div id="moneySlider" class="form-slider" data-input="#moneyAmount" data-min="10000" data-max="1000000" data-value="100000"></div> 
          </div> 
          <!-- Form Item --> 
          <div class="form-group"> 
           <label>How long? (months)</label> 
           <div class="input-group"> 
            <input id="monthNumber" type="number" name="months" class="form-control slider-control input-lg" value="10" min="6" max="12" data-slider="#monthSlider" required> 
            <div class="input-group-addon">months</div> 
           </div> 
           <div id="monthSlider" class="form-slider" data-input="#monthNumber" data-min="6" data-max="12" data-value="10"></div> 
          </div> 
          <div class="form-group"> 
           <label>Telephone Number</label> 
           <!-- Radio --> 
           <input type="number" name="telephone" class="form-control" required/> 
          </div> 
          <!-- Form Item --> 
          <div class="form-group"> 
           <label>3 Months Bank or Paypal </label> 
           <!-- Radio --> 
           <input type="file" name="statements" class="ml btn btn-primary btn-lg" /><span>Upload</span> 
          </div> 
          <!-- Form Item --> 
          <div class="form-group"> 
           <label>Monthly repayment</label> 
           <span id="formResult" class="form-total">USD<span>262.99</span></span> 
          </div> 
          <div class="form-group form-submit"> 
           <button type="submit" class="btn-submit btn-lg"><span>Send a request!</span></button> 
          </div> 
</form> 

, dass ich eine Datei und einige Daten über Formulardaten schreiben verwenden. Dies ist der jQuery-Code

$("#home").on("submit", function(event) { 
event.preventDefault(); 
var formData = new FormData($(this)[0]); 
$.ajax({ 
     url: 'http://example.com/home.php', 
     type: 'POST', 
     data: formData, 
     async: true, 
     success: function (data) { 
      console.log(data) 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 

    return false; 

}); 

und schließlich der PHP-Skript

<?php 

header('Access-Control-Allow-Origin: *'); 

header('Access-Control-Allow-Methods: GET, POST'); 

header("Access-Control-Allow-Headers: X-Requested-With"); 


$rawData = file_get_contents("php://input"); 

return print_r($rawData); 
?> 

Auf der Client-Seite, die console.log(data) leer ist. Warum kann ich die geposteten Daten nicht erhalten?

+0

gibt es keine 'action_url' in Ihrem Formular – Jenish

+0

' action_url' ist nicht erforderlich, da die Daten mit Ajax gebucht –

+1

Gibt es einen Grund Sie nicht '$ _FILES' mit? So oder so versuchen Sie es. Ich glaube nicht, dass "php: // input" für die Verwendung mit "multipart/form-data" -Uplays gedacht ist. –

Antwort

1

Eigentlich php://input ermöglicht es Ihnen, rohen POST Daten zu lesen, aber php://input funktioniert nicht, wenn enctype="multipart/form-data" für Detail-Info: http://php.net/manual/en/wrappers.php.php

<?php 

header('Access-Control-Allow-Origin: *'); 

header('Access-Control-Allow-Methods: GET, POST'); 

header("Access-Control-Allow-Headers: X-Requested-With"); 

echo '<pre>'l 
// for upload data 
print_r($_FILES); 
echo '<br>'; 
// for posted data 
print_r($_POST); 
echo '</pre>'; 
?> 
-1

Formular, das Sie durch Ajax senden nicht korrekt ist.

Sie können Ihr ganzes Formular Formdata() zur Verarbeitung

var form = $('#home')[0]; // You need to use standard javascript object here 
var formData = new FormData(form); 

Verwendung dieser formData senden mit Ajax

+0

Veröffentlichen Sie nicht nur Links als Antworten. Wenn der Link das Problem erläutert, fügen Sie die Schlussfolgerung und den Fix in Ihre Antwort ein. Links ändern sich, Beiträge werden gelöscht usw. Dann wird diese Antwort nutzlos sein. –

-1

jQuery unterstützt geben alle Formulardaten mit der Funktion serialize oder serializeArray bekommen.

in Ihrem Code verwenden

$("#home").on("submit", function(event) { 
    event.preventDefault(); 
    var formData = $("#home").serialize(); 
    $.ajax({ 
     url: 'http://example.com/home.php', 
     type: 'POST', 
     data: formData, 
     async: true, 
     success: function (data) { 
     console.log(data) 
    }, 
    cache: false, 
    contentType: false, 
    processData: false 
    }); 
}); 

In PHP Verwendung var_dump($_REQUEST) alle Eingaben ohne file Typ zu erhalten. Mit Dateityp können Sie lesen PHP Upload File

+0

Das ist nicht 'FormData' (was Sie tun müssen, wenn Sie Dateien mit Ajax hochladen wollen). Das OP hat eine '' im Formular. –