За последние 24 часа нас посетили 17756 программистов и 1685 роботов. Сейчас ищут 1047 программистов ...

Как на ajax передать массив методом POST на php страницу

Тема в разделе "JavaScript и AJAX", создана пользователем sound, 16 сен 2014.

  1. sound

    sound Guest

    Обрабатывал запросы на ajax такой функцией

    Код (Text):
    1. function send()
    2. {
    3. startLoadingAnimation();
    4. //Получаем параметры
    5. var data = $('#mydata').val()
    6. var data2 = $('#mydata2').val()
    7.   // Отсылаем паметры
    8.        $.ajax({
    9.                 type: "POST",
    10.                 url: "SendData.php",
    11.                 data: ( {"data" : data, "data2" : data2} ) ,
    12.                 // Выводим то что вернул PHP
    13.                   // - запустим анимацию загрузки
    14.                 success: function(html) {
    15.              
    16.                
    17.                    
    18.  //предварительно очищаем нужный элемент страницы
    19.                         $("#result").empty();
    20. //и выводим ответ php скрипта
    21.                         $("#result").append(html);
    22.            
    23.                 stopLoadingAnimation();
    24.        
    25.     }
    26.         });
    27.  
    28. }
    Все переменные простые input поля в html

    А теперь понадобилось передать массив из iputoв
    как получить значения всех полей из массива и потом засунуть их в data для передачи на php страницу ?
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Во-первых, получать отдельное поле формы, обращаясь к нему и вытаскивая данные, если и нужно использовать, то в основном, когда вам надо проверить само наличие этих данных или их корректность. В остальных случаях, достаточно методов serialize() или serializeArray().
    Во-вторых, если вы имеете в виду массив данных из полей, у которых атрибуты name имеют значения "some_name[]", то подходят вышеупомянутые методы или же прописывать вручную:
    Код (PHP):
    1. var data = 'key[]=' + val1 + '&key[]=' + val2 + '&key[]' + val100500; 
    Если же массив данных берется не из полей формы, то только ручное внесение, или преобразовывая массив в json-строку, которую передавать одним параметром.
     
  3. sound

    sound Guest

    А есть рабочий пример на ajax ? а то как то сложно все сразу понять
    задачу наверно точно кто то уже решал
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Рабочий пример чего? И вы бы хоть прояснили ситуацию по поводу того, откуда этот массив берётся.
     
  5. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Код (PHP):
    1. <script type="text/javascript">
    2.     jQuery(function() {
    3.         var array = [encodeURIComponent(1), encodeURIComponent(2), encodeURIComponent('helloworld'), encodeURIComponent('foo'), encodeURIComponent('bar')];
    4.         var url = encodeURI('http://example.com/test.php');
    5.  
    6.         jQuery.ajax({
    7.             beforeSend: function() {
    8.                 console.log('beforeSend');
    9.             },
    10.             complete: function() {
    11.                 console.log('complete');
    12.             },
    13.             data: {array: array},
    14.             dataType: 'json',
    15.             error: function(jqXHR, textStatus, errorThrown) {
    16.                 console.log('error: ' + jqXHR.status);
    17.             },
    18.             success: function(data, textStatus, jqXHR) {
    19.                 console.log('success');
    20.             },
    21.             type: 'POST',
    22.             url: url
    23.         });
    24.     });
    25. </script>