2013-11-01 2 views
8

Возможно, это было задано раньше, но у меня есть поиск здесь и в Google, и каждый ответ, который я прочитал, не работает.Передача данных и файла формы в php с помощью ajax

Вопрос, который я должен решить, заключается в создании формы с именем, фамилией, электронной почтой и изображением. Затем передайте данные в базу данных и загрузите файл также в базу данных. В настоящее время мой код ничего не делает после нажатия кнопки. Перед тем, как добавить файл, он будет вставлять данные в мою базу данных.

HTML

<form id="myForm" method ="post" enctype="multipart/form-data"> 
    First Name: <input type="text" name="fname" id="fname"> <br> 
    Last Name: <input type="text" name="lname" id="lname"> <br> 
    Email: <input type="text" name="email" id="email"> <br> 
    Image: <input type="file" name="image" id="image"> <br> 
    <button type="button" name="btnSubmit" id="btnSubmit"> Submit </button> 
</form> 

AJAX/JS

$("#btnSubmit").click(function(){ 
    var formData = new FormData($(this)[0]); 
    $.ajax({ 
     type: 'POST', 
     url: 'form2.php', 
     data: formData, 
     success: function (data) { 
      alert(data) 
     }, 
     }); 
    }); 

PHP

$upload = basename($_FILES['image']['name']); 
$type = substr($upload, strrpos($upload, '.') + 1); 
$size = $_FILES['image']['size']/1024; 

if ($_FILES["image"]["error"] > 0) 
{ 
    echo "Error: " . $_FILES["image"]["error"] . "<br>"; 
} 
else 
{ 
    echo "Upload: " . $upload . "<br>"; 
    echo "Type: " . $type . "<br>"; 
    echo "Size: " . $size . " kB<br>"; 
} 

$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$email = $_POST['email']; 
echo "You Entered <br />"; 
echo "<b>First Name:</b> ". $fname . "<br />"; 
echo "<b>Last Name:</b> ". $lname . "<br />"; 
echo "<b>Email:</b> ". $email . "<br />"; 
+0

http://stackoverflow.com/questions/9622901/how-to-upload-a- file-use-jquery-ajax-and-formdata – adeneo

+0

Добро пожаловать в [so]. Когда вы задаете вопросы, это помогает объяснить, что вы имеете в виду конкретно. Например, не просто сказать что-то _ «не работает» _. Что это говорит? Как это помогает решить проблему? Также неплохо объяснить, почему вы что-то делаете, поскольку кто-то может сказать вам, если вы собираетесь что-то не так, но может быть приемлемым, если это было для чего-то другого. Для получения дополнительной информации см. [Ask]. Спасибо! –

+0

Qantas 94 Heavy, это лучшее объяснение? –

ответ

1

формы по умолчанию представить, где they'r сказал. Чтобы остановить это, вам нужно предотвратить это. Ваш JS должен выглядеть следующим образом:

$("form#data").submit(function(event){ 
    event.preventDefault(); 
    ... 
}); 
0

Эта линия

if ($_FILES["file"]["error"] > 0) 

Должно быть

if ($_FILES["image"]["error"] > 0) 
+0

Что показывает консоль ваших браузеров в качестве ответа? – Gavin

+0

ничего не отображает никакого ответа на консоли –

1

изменить кнопку submit типа для button типа, а затем использовать AJAX, как это:

<button type="button" name="btnSubmit" id="btnSubmit"> Submit </button> 

вам нужно изменить Jquery код для:

$("#btnSubmit").click(function(){ 
    var formData = new FormData($("#myForm")); 
    $.ajax({ 
     type: 'POST', 
     url: 'form2.php', 
     data: formData, 
     success: function (data) { 
      alert(data) 
     }, 
     }); 
    }); 

, а также изменить код здесь if ($_FILES["file"]["error"] > 0) к if ($_FILES["image"]["error"] > 0)

+0

Я добавил это и изменил свой jquery, но все равно не купил в моей базе данных, также не должно появиться предупреждение? –

+0

Вы правильно подключаетесь к своей базе данных? и какой код вы используете для хранения данных в db? –

+0

Я правильно подключаюсь, я не изменил код подключения, так как я добавил окно с файлом. Раньше у меня были данные формы, добавляющие к моей базе данных или только файл, но не могу получить оба. У меня такое чувство, что мой ajax не подходит к моему файлу php. –

Смежные вопросы