Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
1

Отправляет запросы якс ровно столько, какой по счету запрос

30.11.2017, 15:11. Показов 737. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
    function upload(mod){ 
        $('[type=file]').click().change(function(e){
            var data = new FormData();
                data.append(0, this.files[0]);
                
            $.ajax({
                url: '/ajax/uploads.php?do='+mod,
                type: 'POST',
                data: data,
                cache: false,
                dataType: 'json',
                processData: false, 
                contentType: false, 
                success: function(respond){
                    if(typeof respond.error === 'undefined'){
                        if(respond['messeg'])
                            messeg(respond['messeg']);  
                        if(respond['do'] == 'img')
                            $("#"+respond['do']).attr("src", respond['url']);              
                    }else
                        messeg('Ошибка в работе'); 
                
                }
            });
        });
    }
Отправляю запрос на загрузку, ок. Выбираю второй файл для загрузки, отправляет прошлый запрос и новый. Причем чем больше файлов отправший, тем больше количество запросов будут отправлятся за раз... Как так получилось?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2017, 15:11
Ответы с готовыми решениями:

Splash Screen должен показываться ровно столько времени сколько загружается сама программа
Подскажите кто встречался с такой задачкой, сплэш скрин должен показываться ровно столько времени...

Форма регистрации не отправляет запросы в БД
Помогите разобраться в чем ошибка, в общем цель такая при нажатии на кнопку "зарегестрироваться" с...

OleDbCommandBuilder отправляет неправильные запросы
Есть база Access, связанная с программой через DataSet. Нужно было сделать так, чтобы изменялись...

Найти средний по величине элемент, т.е. такой, что в массиве ровно n элементов меньше его и столько же элементов больше
Всем привет. Помогите, пожалуйста, алгоритм решения задачи, либо блок схему. Медиана. В массиве...

8
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
30.11.2017, 15:26 2
в ответе от сервера приходит документ со скриптом вашего обработчика, который каждый раз добавляет обработчики на клики.
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
30.11.2017, 15:46  [ТС] 3
Нет, скрипт на странице, в ответ от скрипта получаю строчку, без скрипта
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
30.11.2017, 16:05 4
Ну я вижу что там не строчка приходит, а json,
Каким образом вызывается функция upload?

Добавлено через 13 минут
Вы "кликаете" на кнопку вызывая диалоговое окно для выбора файла, и каждый раз добавляете обработчик на событие change, который отправляет файлы вам. Сделайте так, чтобы вот этот код .change(function(e){ /* ... */ }) срабатывал только один раз
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
01.12.2017, 08:43  [ТС] 5
А как это сделать?
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
01.12.2017, 11:54 6
Хм. Я не знаю как вы используете функцию upload(). И не вижу разметку. Можно, например, значение mod сохранять в data-... атрибутах.
input[type=file] у вас один?
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
32
33
$('[type=file]').on('change', function () {
  var data = new FormData(),
  $this = $(this);
 
  data.append(0, this.files[0]);
 
  $.ajax({
    url: '/ajax/uploads.php?do=' + $this.data('mod'),
    type: 'POST',
    data: data,
    cache: false,
    dataType: 'json',
    processData: false,
    contentType: false,
    success: function (respond) {
      if (typeof respond.error === 'undefined') {
        if (respond['messeg']) {
          messeg(respond['messeg']);
        }
 
        if (respond['do'] == 'img') {
          $("#" + respond['do']).attr("src", respond['url']);
        }
      } else {
        messeg('Ошибка в работе');
      }
    }
  });
});
 
function upload(mod){
  $('[type=file]').data('mod', mod).click();
}
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
01.12.2017, 16:45  [ТС] 7
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
    function upload(mod){ 
        $('[type=file]').data('mod', mod).click();  
    }
    
    $('[type=file]').on('change', function () {
 
            var data = new FormData();
                data.append(0, this.files[0]);
                
            $.ajax({
                url: '/ajax/uploads.php?do='+this.data('mod'),
                type: 'POST',
                data: data,
                cache: false,
                dataType: 'json',
                processData: false, 
                contentType: false, 
                success: function(respond){
                
                    if(typeof respond.error === 'undefined'){   
                        if(respond['do'] == 'img')
                            $("#"+respond['do']).attr("src", respond['url']);   
 
                        messeg(respond['messeg']);
                    }else
                        messeg('Ошибка в работе'); 
                
                }
            });
        });
file - один на странице, блин тогда у меня совсем не хочет отправлять запрос после выбора файла...
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
01.12.2017, 16:57 8
Вангую что скрипт у вас стоит где-то в head, upload(mod) прописан инлайн в onclick на какой-нибудь красивой кнопке и про $(document).ready(function(){}) | $(funciton ()); вы не слыхали.

Обожаю играть в угадайку (нет)
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
06.12.2017, 15:29  [ТС] 9
Решил вопрос, подскажи пожалуйста вот еще в чем.

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
32
33
34
35
36
37
38
39
40
    function upload(mod){ 
        $('#'+mod).click().change(function(e){
            var data = new FormData(),
                progressBar = $('#progressbar');
                data.append(0, this.files[0]);
                
            $.ajax({
                url: '/ajax/uploads.php?do='+mod,
                type: 'POST',
                data: data,
                cache: false,
                dataType: 'json',
                processData: false, 
                contentType: false,
                xhr: function(){
                    var xhr = $.ajaxSettings.xhr(); // получаем объект XMLHttpRequest
                        xhr.upload.addEventListener('progress', function(evt){ // добавляем обработчик события progress (onprogress)
                            if(evt.lengthComputable) { // если известно количество байт
                                // высчитываем процент загруженного
                                var percentComplete = Math.ceil(evt.loaded / evt.total * 100);
                                // устанавливаем значение в атрибут value тега <progress>
                                // и это же значение альтернативным текстом для браузеров, не поддерживающих <progress>
                                progressBar.val(percentComplete).text('Загружено ' + percentComplete + '%');
                            }
                        }, false);
                        return xhr;
                },              
                success: function(respond){
                    if(typeof respond.error === 'undefined'){   
                        if(respond['do'] == 'img')
                            $("#i"+respond['do']).attr("src", respond['url']);  
 
                        messeg(respond['messeg']);
                    }else
                        messeg('Ошибка в работе'); 
                
                }
            });
        });
    }
Не удается настроить проресс бар, индикатор сразу же загружает нежели по факту загрузки файла
0
06.12.2017, 15:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2017, 15:29
Помогаю со студенческими работами здесь

Приложение для Android, которое отправляет USSD запросы
Добрый день, форумчане) Помогите пожалуйста, для работы необходимо написать простое приложение для...

Какой по счету тег
Имеется div с тегами img, при нажатии на изображение необходимо вызвать функцию, которая покажет...

Как узнать какой элемент по счету в коллекции?
&lt;div&gt; &lt;p&gt;p0&lt;/p&gt; &lt;p&gt;p1&lt;/p&gt; &lt;p&gt;p2&lt;/p&gt; &lt;/div&gt; Пускай я как-то с помощью js получил...

Определить, на какой странице находится строка номер n и какой по счёту будет эта строка на странице
Страницы книги На каждой странице книги напечатано ровно k строк: на первой странице находятся...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru