2015-07-09 3 views
0

Я хочу отправить FormData с использованием AJAX в мой PHP-файл, но когда я нажимаю на кнопку, появляется ошибка undefined index fname.ajax не отправляет данные на php

<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> 

<script language="javascript" src="js/jquery-1.9.1.min.js"></script> 
<script language="javascript" src="js/jquery.form.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    //alert(4); 
    $("#btnSubmit").click(function(){ 
     var formData = new FormData($("#myForm")); 
     alert(formData); 
     console.log(formData); 
     $.ajax({ 
      type: 'POST', 
      url: 'learn_form2.php', 
      data: formData, 
      success: function (data) { 
       alert(data); 
      }, 
      cache: false, 
      contentType: false, 
      processData: false 
      }); 
     }); 
    }); 
</script> 
<?php 
    echo $_REQUEST['fname']; 
?> 

Пожалуйста, помогите

+2

[Quit с помощью 'предупреждения()' для поиска и устранения неисправностей.] (Http://stravid.com/en/stop-the-javascript-alert-madness/), используйте 'console.log (). –

+0

Вы просматривали запрос/ответ в консоли браузера? Отправляется ли 'fname'? –

+0

Основная отладка: 'var_dump ($ _ REQUEST, file_get_contents ('php: // input'))', см., Что действительно появилось ... –

ответ

0

Вы должны contruct FormData используя форму DOM элемент, а не объект JQuery. Что-то вроде этого

new FormData($("#myForm")[0]); 

Было бы также устранить проблемы ПОТЕНЦИАЛА для реализации обработчика ошибок на вашем Ajax вызова.

2

Отметьте, что FormData ожидает form DOMElement, а не объект jQuery. Также обратите внимание, что вы должны привязать к событию submit самого form, а не нажатию кнопки отправки. Это позволяет предотвратить стандартную подачу формы. Попробуйте это:

$("#myForm").submit(function(e) { 
    e.preventDefault(); // stop standard form submission 

    var formData = new FormData(this); // give the form DOMElement to FormData 
    $.ajax({ 
     type: 'POST', 
     url: 'learn_form2.php', 
     data: formData, 
     success: function (data) { 
      alert(data); 
     }, 
     cache: false, 
     processData: false 
    }); 
}); 
+0

Я пытаюсь это сделать, но все еще не работаю на php-end. он дает ошибку на php, чтобы определить неопределенный индекс. проверьте –

+0

Попробуйте удалить 'processData' или установите его в' true' –

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