За последние 24 часа нас посетили 16739 программистов и 1606 роботов. Сейчас ищут 1318 программистов ...

Как передать массив форм через AJAX?

Тема в разделе "JavaScript и AJAX", создана пользователем Denis, 4 окт 2008.

  1. Denis

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

    С нами с:
    5 фев 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Украина, Одесса
    Том 3. Решив предыдущую проблему с кроссбраузерность и медотом add(), объекта формы SELECT, появилась новая проблема как передать массив форм через AJAX?

    HTML:
    1. <select name="num[]">
    2.     <option value="1">1</option>
    3.     <option value="2">2</option>
    4.     <option value="3">3</option>
    5. <select name="num[]">
    6.     <option value="1">1</option>
    7.     <option value="2">2</option>
    8.     <option value="3">3</option>
    9. <select name="num[]">
    10.     <option value="1">1</option>
    11.     <option value="2">2</option>
    12.     <option value="3">3</option>
     
  2. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    serialize ?
     
  3. Denis

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

    С нами с:
    5 фев 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Украина, Одесса
    а я не знаю как массив сериализируется для передачи через AJAX
     
  4. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Никак, так как передаёшь, так и получаешь.
     
  5. Denis

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

    С нами с:
    5 фев 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Украина, Одесса
    [js]function getRequestBody(oForm) {
    var aParams = new Array();
    for(var i = 0; i < oForm.elements.length; i++) {
    var sParam = encodeURIComponent(oForm.elements.name);
    sParam += "=";
    sParam += encodeURIComponent(oForm.elements.value);
    aParams.push(sParam);
    }
    return aParams.join("&");
    }

    function DoRequestParams() {
    if (req.readyState == 4 || req.readyState == 0) {

    var nameRequestForm = document.getElementById("name_request_form");

    var post_arg = getRequestBody(nameRequestForm);

    req.open("POST", "client.php?do=request", true);
    req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
    req.onreadystatechange = handleServerResponseDoRequestParams;
    req.send(post_arg);
    } else {
    setTimeout('DoRequestParams()', 1000);
    }
    }[/js]

    Вот написал небольшое решение может кому-то пригодится, данные передаём через POST