• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Отправка данных (post)
Отправка данных (post)
Nya[Adm]
Сообщений: 11
Репутация: 0

Сообщение # 1 | 19:05:54
У меня у материалов можно выбирать сразу несколько значений категорий.
Пытаюсь это реализовать в аякс отправке и безуспешно.
Код
var arrg = [1,2];
$.ajax({
          url:'url',
          type:'post',
          dataType:'text',
          data: {
ocat: arrg,
          },
          success: function(html) {
             console.log('Позиция сохранена');
          }
       });

Однако он их не видит таким образом.
Пытался инимы способом
Код
ocat:1,
ocat:2
Теперь он принимает только последние значение.

Сообственно вопрос как отослать сразу несколько значений на сервер?
sch779
Сообщений: 703
Репутация: 348

Сообщение # 2 | 19:24:51
Цитата (Nya|Adm|)
Пытаюсь это реализовать в аякс отправке и безуспешно.
Посмотрите, какой запрос в таком случае генерит сама система. Вполне возможно, что реализовано в системе это не через массив, а тупо - ocat1, ocat2 и т.д.
Nya[Adm]
Сообщений: 11
Репутация: 0

Сообщение # 3 | 19:33:53
Цитата (sch779)
ocat1, ocat2
Не работает.
------WebKitFormBoundaryiB9RdtECX0ocCT1tContent-Disposition: form-data; name="ocat"

2

------WebKitFormBoundaryiB9RdtECX0ocCT1tContent-Disposition: form-data; name="ocat"

4

------WebKitFormBoundaryiB9RdtECX0ocCT1tContent-Disposition: form-data; name="ocat"

6

вот выловленный пакет козы который выдаёт при ред/добавлении материала.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 4 | 04:10:47
Цитата (Nya|Adm|)
вот выловленный пакет
Вы посмотрите полностью запрос, который посылается на сервер. Если это post-запрос, то кроме заголовка смотрите еще текст запроса. Т.е., должно быть что-то типа: /publ/?message=....&ocat=... и т.д.
Только после этого можно будет определить как посылаются сразу несколько категорий на сервер.
Nya[Adm]
Сообщений: 11
Репутация: 0

Сообщение # 5 | 22:35:06
sch779
Сообщений: 703
Репутация: 348

Сообщение # 6 | 14:27:34
Nya[Adm], попробуйте так
Код
var arrg = [1,2];
$.post("url", {'ocat[]': arrg},
            success: function(html) {
               console.log('Позиция сохранена');
            }
           );


P.S.
Хотя, структура очень напоминает результат метода .serializeArray()!
Она запишет массив ocat в jSON-формате: [{name:"ocat", value:"1"}, {name:"ocat", value:"2"}]
Т.е., попробуйте так
Код

$.post("url", [{name:"ocat", value:"1"}, {name:"ocat", value:"2"}],
            success: function(html) {
               console.log('Позиция сохранена');
            }
           );

Добавлено (15 Фев 2013, 14:27:34)
---------------------------------------------
Кстати, аналогичный по формату запрос генерит процедура _uPostForm.
Она, в основном, предназначена для отправки данных из существующей формы - т.е., ей перадается ссылка на форму.
Но у нее есть и другая форма вызова, когда указывается url-адрес и данные для отправки.
Более подробно - см. здесь.

Сообщение отредактировал sch779 - Пятница, 15 Фев 2013, 00:08:46
Nya[Adm]
Сообщений: 11
Репутация: 0

Сообщение # 7 | 16:29:53

Код
var aagr = [1,2,3];
       _uPostForm('', {url:'/load/0-0-0-1-13',type:'post',data:{ocat:aagr}});

Приняло только значение 1, однако второй по списку.
Цитата (sch779)
[{name:"ocat", value:"1"}, {name:"ocat", value:"2"}]
не получает вообще данных.
Цитата (sch779)
'ocat[]': arrg
Тоже только 1 значение сохраняется, а выглядит при отсылке так - ocat[]:1, ocat[]:2 и т.д.

Добавлено (15 Фев 2013, 16:29:53)
---------------------------------------------
Вот полный скрипт.

sch779
Сообщений: 703
Репутация: 348

Сообщение # 8 | 08:11:43
Цитата (Nya|Adm|)
Приняло только значение 1
Вторая форма вызова _uPostForm, без указания формы, как выяснилось, работает абсолютно аналогично обычному $.post()!
А вот _uPostForm с указанием формы генерит абсолютно правильный формат данных, который отличается от формата $.post!
Т.е., обычный $.post генерит стандартную строку типа: ?prm1=data1&prm2=data2&...
А _uPostForm с формой генерит, судя по всему, xml-формат, который выглядит именно так, как Вы показывали!
Х/з, в чем разница!?
Nya[Adm]
Сообщений: 11
Репутация: 0

Сообщение # 9 | 14:54:24

Код
$.ajax({
     url:'/publ/0-0-0-0-1',
     type:'get',
     success:function(html){
        var ssid = $('input[name=ssid]', html).val();
        var aagr = ['1','2'];   
        var data = {    
           jkd498:1,    
           jkd428:1,    
           edttbrief:3,    
           html_brief:1,    
           edttmessage:3,    
           html_message:1,    
           uplastmod:1,    
           coms_allowed:1,    
           a:14,    
           fsize:'',    
           fsize:'',    
           ffont:'',    
           ffont:'',    
           fcolor:'',    
           fcolor:'',    
           user:'',    
           id:1,    
           ocat:aagr,
           title:'Sword Art Online [25]',    
           vers:'',    
           brief:'S123123123',    
           message:'123',   
           llink:'#',   
           aname:'Русская озвучка',   
           aemail:'111',   
           asite:'12345',   
           proglink:'фсв',    
           doclink:'ффф',    
           ssid: ssid,    
           _tp_:'xml',    
           _wi:1    
        };   

        function quickForm() {   
           var form = $('<form/>').attr({'method': 'post', 'action': '/load/0-0-0-13-1', 'enctype': 'mutipart/form-data', 'id': 'quickForm'};).hide();   
           for(var name in data){   
              $('<input/>').attr({'type': 'hidden', 'name': name};).val(data [name]).appendTo(form);   
           }   
           form.appendTo('body');   
           var onRequestFinished = function() {   
              console.log(arguments);   
              form.remove();   
              console.log('Done');   
           };   
           _uPostForm('quickForm', {   
              error: onRequestFinished,   
              success: onRequestFinished   
           };);   
        };
        quickForm();
     },
     error: function() {
        console.log('123');
     }
};);

В value получается - value="1, 2". Но так вообще не записывает значение....
Сообщение отредактировал Nya[Adm] - Суббота, 16 Фев 2013, 15:07:06
sch779
Сообщений: 703
Репутация: 348

Сообщение # 10 | 18:28:05
Цитата (Nya|Adm|)
var form = $('<form/>').attr({'method': 'post', 'action': '/load/0-0-0-13-1',
Обрати внимание - в стандартной форме добавления материала используется просто '/load/'!
Кроме этого, у есть подозрение, что значения ocat форма выдает не в виде массива, как у Вас.
Nya[Adm]
Сообщений: 11
Репутация: 0

Сообщение # 11 | 22:46:20
sch779,
Цитата (sch779)
'/load/0-0-0-13-1',
Это не имеет разницы, а ocat передаётся массивом.

Добавлено (16 Фев 2013, 22:43:10)
---------------------------------------------
Проблема решена

Добавлено (16 Фев 2013, 22:46:20)
---------------------------------------------
И всё таки я немного выражу свои эмоции


Код
'enctype': 'mutipart/form-data'

MUTIPART!!!!!!! КАК ТАК!!!!!!!!!!!
sch779
Сообщений: 703
Репутация: 348

Сообщение # 12 | 19:35:29
Так проблему решили с помощью _uPostForm или обычным $.post?
Не могли бы Вы привести здесь, или выслать в "личку" Ваш рабочий код этого блока?
Мне скоро предстоит передавать на сервер список людей в подобном виде.
Астра
Сообщений: 847
Репутация: 260

Сообщение # 13 | 07:37:45
Я добавляю новый материал методом $.post с другой страницы (все работает и добавляется). Но при этом, как известно, сервер присылает ответ в виде xml для аякс-окна. Я вижу этот ответ в отладчике. Но спрашивается: какой функцией словить этот ответ, чтоб на той левой странице, которая посылает $.post, выводилось аналогичное подтверждение (или ошибка - в зависимости от ответа).
ps аякс-окно я сформирую
JabaMaster
Сообщений: 5
Репутация: 2

Сообщение # 14 | 08:07:37
JQ передает ответ сервера в сallback.

Код
$.post( 'Какой-то url', function ( data ) {
    // data - ответ сервера, обработать его можно внутри этого сallback-а
})
sch779
Сообщений: 703
Репутация: 348

Сообщение # 15 | 22:31:38
Цитата (JabaMaster)
обработать его можно внутри этого сallback-а
Кстати - не факт!
Сам недавно на это "напоролся" - иногда в хроме и FF возврат результата идет не через метод success, а через error!
При этом, есть текст ошибки - что-то типа про ошибку конвертации, но в responseText возвращается сообщение об успешной обработке запроса!
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Отправка данных (post)
  • Страница 1 из 1
  • 1
Поиск: