Как отправить динамически сгенерированные переменные через ajax, используя метод post - PullRequest
0 голосов
/ 02 июля 2010

У меня есть html-страница, которая содержит таблицу, несколько строк и внутри любой строки я отмечен флажком. Когда я устанавливаю флажок, я буду удалять сообщение, НО только тогда, когда я нажимаю красную кнопку смерти.

* ** 1003 тысяча два * Пример
таблица
тр (unique_id)
тд [флажок]
содержание td
Другое содержание
[... и так далее]
/ Таблица
[Красная кнопка-из-смерти]

Теперь удаление нескольких строк должно происходить без перезагрузки страницы, поэтому я настроил функцию ajax, которая работает следующим образом:

  1. настроить объект ajax.
  2. установить метод open (post / get, url, true) ...
  3. дождитесь ответа страницы "URL" .... возьмите кофе, сделайте перерыв.
  4. получил ответ, с помощью jquery удалите строку, используя уникальный идентификатор строк.
  5. jquery: выскакивает отзыв о только что выполненном действии
  6. jquery: обновить счетчик на странице

Итак, я начинаю пытаться удалить одну запись, и все идет хорошо, я создал ссылку на каждую строку, которая вызывает функцию для удаления "одной записи", передавая идентификатор элемента.

Но теперь мне нужно разработать multi-delete-of-doom. Первое, что я подумал, было: «Я могу обернуть таблицу в« форму »и отправить все с помощью метода« post »». Это кажется блестящим и легким ....
но не работает: - |

Погугливая, я нашел какой-то пример, который, кажется, предлагает установить переменную, содержащую элемент для отправки ... поэтому, пытаясь следовать этому пути, мне нужен метод, чтобы получить имя / идентификатор / значение важно, я могу заполнить атрибут с правильным идентификатором) выбранного флажка.

Здесь функция, которая делает вызов ajax и все остальное

function deleteSelected() {
    var params = null;
    var xmlhttp;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("post", "./cv_delete_pm.php?mode=multi", true); //cancella i messaggi e ritorna l'id delle righe da cancellare
    //Send the proper header information along with the request
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", params.length);
    http.setRequestHeader("Connection", "close");

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status != 404) {
                var local = eval( "(" + xmlhttp.responseText + ")" );
                /*
                //cancella gli elementi specificati dalla response
                var Node = document.getElementById(local.id);
                Node.parentNode.removeChild(Node);
                loadMessagesCount('{CUR_FOLDER_NAME}'); //aggiorna sidebar e totale messaggi nel body
                initTabelleTestate(); //ricrea lo sfondo delle righe
                $("#msgsDeleted").attr("style", "left: 600px; top: 425px; display: block;");
                $("#msgsDeleted").fadeIn(500);
                $("#msgsDeleted").fadeOut(2000);
                $("#msgsDeleted").hide(0);
                */
            }
        }
    };
    xmlhttp.send(params);
}

На самом деле переменная 'param' установлена ​​в ноль только потому, что я делаю некоторые эксперименты.

Итак, вопросы

являются:
- Можно ли сделать ajax-запрос, отправив содержимое формы? Как?
- Можно ли получить имя / значение / идентификатор (один из них) всех выбранных флажков HTML-страницы? Как?

Ответ на один из этих двух вопросов с решением достаточно, чтобы выиграть мое личное поклонение:)

Ответы [ 2 ]

0 голосов
/ 07 июля 2010

Обновление. Решаемые.

Я использовал встроенную функцию jquery для управления суммой формы с помощью функции $ jQuery.post () и функции $ (# idform) .serialize (). Сейчас действительно поздно, но завтра я постараюсь не забыть вставить сюда правильный код:)

Спасибо за ответ в любом случае:)

Обновление (код ниже):

//Send by Post
function deleteSelected() {
    $.post("./delete.php?mode=multi", 
        $("#pmfolder_form").serialize(),
        function(data){
            var local = eval( "(" + data + ")" );
                    //this delete the html via dom to update the visual information
            for (var i = 0; i < local.length-1; ++i) {
                var Node = document.getElementById(local[i]);
                Node.parentNode.removeChild(Node);
            }
        });
}

Структура окна выбора была примерно такой:

<input type="checkbox" name="check_<? print $progressive_id; ?>" value="<? print $real_id; ?>"/>

Вот и все. :)

0 голосов
/ 02 июля 2010

Редактировать: Я думаю, что вы используете JQuery, так что смотрите здесь: http://api.jquery.com/category/ajax/

Вы должны использовать работу с фреймами javascript, например dojo или jquery, для обработки Ajax.Написание собственных функций ajax с нуля не рекомендуется.

Некоторые фреймворки:

Пример jquery (вы уже используете эту платформу?):

$.post("test.php", $("#testform").serialize());

Пример Dojo:

ОтправкаФорма с использованием POST и Ajax:

  function postForm() {


                var kw = {
                    url:    'mypage.php',
                    load:    function(type, data, evt) {

                        dojo.byId("someElement").innerHTML=data;



                    },

                    formNode: dojo.byId("myForm"),
                    method: "POST",
                    error: function(type, data, evt){
                       //handle error

                    },
                    mimetype: "text/html"
                };

                dojo.io.bind(kw);

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...