Я пытаюсь отправить данные формы через ajax
form1.php
Я использую запрос для получения всех данных параметров URL
$_REQUEST["Ename"]; $_REQUEST["eImg"];
Чтобы загрузить изображение, я использую этот код http://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.html
В приведенной выше ссылке вы можете увидеть исходный код вместо $ _FILES ['photoimg'] ['name'] ;, я использую $ _FILES ['image'] ['name']; но он не загружает файл и не дает сообщение об успешном завершении работы.
include('db.php'); session_start(); $session_id='1'; // User session id $path = "uploads/";
вinclude('db.php'); session_start(); $session_id='1'; // User session id $path = "uploads/";
Я удалил скрипт, помеченный **
$valid_formats = array("jpg", "png", "gif", "bmp","jpeg"); **if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {** $name = $_FILES['image']['name']; $size = $_FILES['image']['size']; if(strlen($name)) { list($txt, $ext) = explode(".", $name); if(in_array($ext,$valid_formats)) { if($size<(1024*1024)) { // Image size max 1 Mb $actual_image_name = time().$session_id.".".$ext; $tmp = $_FILES['image']['tmp_name']; if(move_uploaded_file($tmp, $path.$actual_image_name)) { mysql_query("UPDATE users SET profile_image='$actual_image_name' WHERE uid='$session_id'"); echo "<img src='uploads/".$actual_image_name."' class='preview'>"; } else { echo "failed"; } } else { echo "Image file size max 1 MB"; } } else { echo "Invalid file format.."; } } **else { echo "Please select image..!"; exit(); }**
вы просто не можете загружать файлы через $.ajax()
.
вам нужно будет использовать какой-нибудь файл tryramy iframe или что-то в этом роде, чтобы сделать эту работу. к счастью, есть готовые плагины для jquery для обработки этого для вас (например, $.ajaxForm()
например, похоже, тот, который используется в учебнике, который вы читаете).
РЕДАКТИРОВАТЬ:
плагин также позволяет добавлять дополнительные данные, которые не присутствуют в самой форме. процитировать документацию :
данные
Объект, содержащий дополнительные данные, которые должны быть представлены вместе с формой.data: { key1: 'value1', key2: 'value2' }
Для загрузки изображения с помощью ajax вы должны использовать iframe и установить его идентификатор для формирования цели.
Пожалуйста, ознакомьтесь с http://www.coursesweb.net/ajax/upload-images
Это очень простой код для загрузки изображения
Это не сработает! Изображения обрабатываются иначе, чем текстовые данные в Ajax, поэтому вам придется делать больше, чем просто публиковать его с помощью метода $ .ajax ({}).
Однако вы можете использовать плагин jquery.form.js, он отлично работает. http://jquery.malsup.com/form/#download есть учебник о том, как его использовать здесь.
Любые способы, которыми я пользовался им, позволят мне уточнить для вас.
Код JavaScript здесь
$('.uploadForm').live('click', function(evt){ $('#feedback').html(' '); $('#feedback').html('<img src="images/loader_image.gif" alt="Uploading...."/>'); $("#formID").ajaxForm({ target: '#feedback' }).submit(); evt.preventDefault(); });
Если ваш PHP-код в порядке, это должно сработать. Просто отправьте остальные поля формы обычным способом. Это должно сработать для вас. Если PHP-код в порядке
Например, если у вас были другие поля формы, такие как firstname и lastname в форме, подобной этой
<div class="form"> <fieldset class="ui-corner-all"> <h3 class="ui-widget-header ui-corner-top" align="center">Client information</h3> <form action="save_new_client.php" enctype="multipart/form-data" id="clientForm" method="POST"> <label>First Name</label> <input name="firstname" type="text" id="firstname" class="required" minlength="3"/> <label>Lastname</label> <input name="date_added" type="text" id="date_added" class="dateEst" /> <label>Image</label> <input name="photo" type="file" id="photo" /> <input type="submit" name="button" id="button" value="Save" class="uploadForm"/> <input type="reset" name="reset" id="button" value="Cancel" /></td> </form> </fieldset> <div id="feedback"></div> </div>
Под ним вам просто нужно добавить div или абзац, чтобы сохранить ваше сообщение с обратной связью …. тогда остальное будет просто отлично (как я уже сказал, если ваш PHP-код в порядке), я не просмотрел его много