Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 5
Регистрация: 09.02.2014
Сообщений: 169
1

Отправка формы ajax, как отправить несколько изображений?

09.06.2014, 12:29. Показов 2049. Ответов 5
Метки нет (Все метки)

Отправляю данные обычным способом, т.е с перезагрузкой страницы, робит все норм, решил сделать это при помощи ajax, делаю это так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript" language="javascript">
    function call() {
      var msg   = $('#forms').serialize();
        $.ajax({
          type: 'POST',
          url: 'handler_ads.php',
          data: msg,
          success: function(data) {
            $('#res').html(data);
          },
          error:  function(xhr, str){
                alert('Возникла ошибка: ' + xhr.responseCode);
            }
        });
 
    }
</script>
тут возникает ошибка:
Warning: Invalid argument supplied for foreach() in Z:\home\buyisell\www\handler_ads.php on line 64
т.е ошибка при обработке изображений, не могу понять в чем проблема...

Добавлено через 3 минуты
если что вот кусок формы где загружаются изображения
HTML5
1
2
<font style="position:relative;top: 40%; left:0px;">Загрузите изображения:<br> 
<input name='file[]' type='file' multiple='true' /></font>
и собственно код обработки изображений
код может быть не ахти какой лучший) Я пока новичек в этом деле)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
$pic_weight = 5550;
    $pic_height = 5550;
    
if (isset($_FILES)){
    //пролистываем весь массив изображений по одному $_FILES['file']['name'] as $k=>$v
    foreach ($_FILES['file']['name'] as $k=>$v){    
    //имя файла в переменную
    $file_name = $_FILES['file']['name'][$k];
    //выясняем расширение файла
    $file_type = strtolower(substr($file_name, strrpos($file_name, '.')));
    //директория загрузки
    $uploaddir = "image/image_user/";
   //новое имя изображения
    $apend=date('YmdHis').chr(rand(97, 122)).'';
    //новое имя изображения с расширением
    $name_type = "$apend$file_type";
   // путь к новому изображению
    $uploadfile = "$uploaddir$name_type";
    //Проверка расширений загружаемых изображений
    if($_FILES['file']['type'][$k] == "image/gif" || $_FILES['file']['type'][$k] == "image/png" ||
    $_FILES['file']['type'][$k] == "image/jpg" || $_FILES['file']['type'][$k] == "image/jpeg"){
    //черный список типов файлов
    $blacklist = array(".php", ".phtml", ".php3", ".php4");
    foreach ($blacklist as $item){
        if(preg_match("/$item\$/i", $_FILES['file']['name'][$k])){
            $error+=1;
            echo "<div class='error'><font style='color:red;'>Ошибка! Ошибка при загрузки изображений, неизвестный формат.</div>";
            
        }
    }
    //перемещаем файл из временного хранилища
    if (move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile)){
        //получаем размеры файла
        $size = getimagesize($uploadfile);
     //  проверяем размеры файла, если они нам подходят, то оставляем файл
        //копия картинок 220х220
        if($size[0] < $pic_weight && $size[1] < $pic_height){ 
        if($file_type == ".jpg" OR $file_type == ".jpeg"){
            //задание ширины и высоты
            $width = 220;
            $height = 220;
            //создаем пустое полотно
            $image_p = imagecreatetruecolor($width, $height);
            imagefill($image_p, 0, 0, 0xFFFFFF);
            //загружаем изображение из файла
            $image = imagecreatefromjpeg($uploadfile);
            list($width_orig, $height_orig) = getimagesize($uploadfile);
            $ratio_orig = $width_orig/$height_orig;
            if ($width/$height > $ratio_orig){
              $width = $height*$ratio_orig;
            }else{
            $height = $width/$ratio_orig;
            }
            imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig,$height_orig);
            //вывод
            $name_im_220=date('YmdHis').chr(rand(97, 122)).'bis';
            imagejpeg($image_p,"$uploaddir$name_im_220$file_type", 100);
}elseif($file_type == ".png"){
            $width = 240;
            $height = 240;
            //создаем пустое полотно
            $image_p = imagecreatetruecolor($width, $height);
            imagefill($image_p, 0, 0, 0xFFFFFF);
            //загружаем изображение из файла
            $image = imagecreatefrompng($uploadfile);
            list($width_orig, $height_orig) = getimagesize($uploadfile);
            $ratio_orig = $width_orig/$height_orig;
            if ($width/$height > $ratio_orig) {
            $width = $height*$ratio_orig;
            }else{
            $height = $width/$ratio_orig;
            }
            imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig,$height_orig);
            //вывод
            $name_im_220=date('YmdHis').chr(rand(97, 122)).'bis';
            imagepng($image_p,"$uploaddir$name_im_220$file_type", 8);
}
$mysqli = mysql_connect("$host", "$user","$password","$db_name") or die("Could not connect"); //конект к БД    
    mysql_select_db("$db_name") or die("Could not select database");
        $sql = "INSERT INTO image_ad (name_image,name_image_220px,id_user,num_ad) VALUES('$apend$file_type','$name_im_220$file_type','$id_user','$num_ad')"; //Данные в БД
            $result = mysql_query($sql) or die("Query failed");
                mysql_close($mysqli);
                }
//если размеры файла нам не подходят, то удаляем файл unlink($uploadfile);
else{
    $error+=1;
    echo "<div class='error'><font style='color:red;'>Ошибка! </font>Размер пикселей превышает допустимые нормы.</div>";
    unlink($uploadfile);
    }
}else{
    $error+=1;
    echo "<div class='error'><font style='color:red;'>Ошибка! </font>Файл не загружен, попробуйте еще раз.</div></center>";
    }
}else{
    $error+=1;
    echo "<div class='error'><font style='color:red;'>Ошибка! </font>Можно загружать только изображения в форматах jpg, jpeg, gif и png.</div>";
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2014, 12:29
Ответы с готовыми решениями:

Как отправить через ajax одну из несколько форм с одинаковым id?
здравствуйте хочу отправить через ajax форму: &lt;?php $result = $mysqli-&gt;query(&quot;SELECT * FROM...

Как грамотно отправить на печать несколько файлов изображений? Класс Printing.Printdocument
Всем привет! Продолжаю делать (доводить до ума) свой кастомный Мастер печати изображений. За...

Как при нажатии на кнопку отправить несколько ajax запросов разным скриптам?
Доброе время суток. Столкнулся с такой проблемой: Нужно при нажатии на кнопку отправить несколько...

Отправить несколько изображений на почту
здравствуйте. есть форма заявки &quot;подачи объявления&quot;. нужно чтобы была возможность добавлять...

5
97 / 97 / 74
Регистрация: 15.05.2014
Сообщений: 269
Записей в блоге: 2
09.06.2014, 15:19 2
HTML5
1
2
3
4
<form method="POST" enctype="multipart/form-data">
    <input name="file[]" type="file" multiple="true" /><br />
    <input type="submit" value="Send" />
</form>
PHP
1
var_dump($_FILES);
?
0
Superposition
949 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,084
09.06.2014, 15:32 3
mihalken, это раздел jQuery, не HTML. Тем более здесь упомянут AJAX.

SkyNet123, используйте рекурсивную функцию для последовательной отправки нескольких асинхронных запросов.
0
3 / 3 / 5
Регистрация: 09.02.2014
Сообщений: 169
09.06.2014, 18:42  [ТС] 4
Цитата Сообщение от Padimanskas Посмотреть сообщение
используйте рекурсивную функцию для последовательной отправки нескольких асинхронных запросов.
можете поподробней пожалуйста, если не затруднит)
0
Superposition
949 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,084
10.06.2014, 04:51 5
Цитата Сообщение от SkyNet123 Посмотреть сообщение
можете поподробней пожалуйста
http://code.tutsplus.com/tutor... -net-21077 Здесь все подробно

Добавлено через 8 минут
а это рекурсия

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$(function () {
 
    //массив с последовательностью AJAX запросов
    var ajaxes  = [{ url : '<url>', dataType : 'json' }, { url : '<url2>', dataType : 'xml' }],
        current = 0;
 
    //Рекурсивная функция
    function do_ajax() {
 
// убедиться есть ли еще запросы для отправки
        //check to make sure there are more requests to make
        if (current < ajaxes.length) {
 
// отправка
            //make the AJAX request with the given data from the `ajaxes` array of objects
            $.ajax({
                url      : ajaxes[current].url,
                dataType : ajaxes[current].dataType,
                success  : function (serverResponse) {
                    ...
                    //increment the `current` counter and recursively call this function again
                    current++;
                    do_ajax();
                }
            });
        }
    }
// запускаем функцию впервые, в обработчике вроде `document.ready`
    //run the AJAX function for the first time once `document.ready` fires
    do_ajax();
});
1
3 / 3 / 5
Регистрация: 09.02.2014
Сообщений: 169
10.06.2014, 09:49  [ТС] 6
Спасибо))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2014, 09:49

Как отобразить несколько изображений на экране в не формы
Подскажите, пожалуйста. Как отобразить несколько изображений на экране (можно поверх всех окон)...

AJAX: Отправка параметров из формы. [?Как это сделать?]
Здравствуйте! Есть таблица отображающая список с БД. Есть кнопка в каждом ряду таблицы для...

С ajax нужно отправить несколько POST переменных
научился передовать только один POST, а нужно в 'ajaxData.php' закинуть два POST массива ...

AJAX отправка формы
Есть форма отправки письма админу. Делаю сабмит с помощью AJAX. Разметка формы &lt;form...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru