Я пытаюсь сохранить изображение с помощью AJAX и передачи данных через Formdata ()
но в php файле я не могу получить данные или имя изображения, пожалуйста, помогите мне
вот мой код
<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>
вот мой код сценария ajax:
$("#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");
}
},
});
}
});
А вот мой код «DbManipute.php»:
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";
}
}
я не получил никакой ошибки и данные также не вставлены.
Когда я удаляю загрузку изображения и использую метод сериализации, данные сохраняются успешно, но в методе сериализации имя файла изображения не может быть получено
пожалуйста, помогите мне в этом.
Вам нужно добавить type="file"
по отдельности.
$("#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");
}
},
});
}
});
Ваша ошибка на стороне клиента не будет отображаться на странице, как php.
У вас есть ошибки в вашем коде JavaScript. Вы пропустили закрывающую скобку в конце кода js: });
Если вы используете браузер Chrome или Firefox, нажмите F12
Кнопка и консоль будут показаны и покажет вам ваши ошибки JS.
Совет: вы можете отлаживать ваш проект, печатая любые переменные в вашем коде. Например попробуйте использовать console.log('test');
в вашем коде js, чтобы проверить, работает ли ваша команда ajax. console.log()
распечатает в окне консоли браузера.
Когда я сделал это в вашем коде, я понял, что ваш код вообще не работает. Потому что вы установили свой код для запуска на Отправить а у тебя нет Отправить кнопка. Затем вам нужно изменить кнопки type="submit"
,
После этого вам нужно заблокировать форму, отправив форму через браузер и сообщив браузеру, что вы хотите запустить свой js-код. Для этого вам нужно запретить действие по умолчанию для события отправки формы, например:
$("#signup").on('submit', (function(evt) {
evt.preventDefault();
Еще один совет: ваш php-код находится в функции, которая никогда не вызывается. вам нужно вызвать вашу функцию php в вашем файле php или вы должны вывести свои коды из функции.
Попробуйте изменить свой код следующим образом. Это должно заставить ваш код работать. И чтобы проверить, работает ли ваш ajax-запрос, попробуйте что-то повторить в своем коде и в своем коде js предупредить ответ.
Изменить # 1 Еще одна вещь, которую следует учитывать, это то, что для случаев, когда вы хотите загружать файлы с помощью ajax, вы не можете установить такие данные, как FormData(this)
, Для загрузки ajax вы должны создать объект FormData (new FormData()
) и добавить данные отдельно. (как сказал Реджит Р Кришнан).