опубликовать форму со многими полями и JS Var - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу опубликовать свою форму с помощью ajax в php, затем получить значения из входных данных (я сделал это, и все работает нормально), но я также хочу опубликовать переменную JS в одном ajax.

Есть моя ФОРМАsection.

<form action="new_alias.php" method="post" id="theForm">
                <div class="form-group">
                    <label for="exampleInputEmail1">Wpisz nazwę aliasu</label>
                    <input type="text" name="alias" id="alias" class="form-control" id="exampleInputEmail1"
                        aria-describedby="emailHelp" placeholder="Nazwa aliasu">
                </div>
                <div class="form-group">
                    <label class="col-form-label">Wybierz domenę</label>
                    <?php
                                    if ($resultt->num_rows > 0) {
                                    echo '<select name="name" class="custom-select">';
                                        // output data of each row
                                        while ($row = $resultt->fetch_assoc()) {
                                        echo "<option value='$row[name],$row[id]'>$row[name]</option>";
                                        }

                                        echo '</select>';
                                    } else {
                                    echo "0 results";
                                    }
                                    ?>
                </div>

                <div class="form-group">
                    <label for="exampleInputEmail1">Wpisz adresy docelowe</label>
                    <input type="text" name="source" id="source" placeholder="Adresy mailowe" autocomplete="nope"
                        autocomplete="off" class="typeahead tm-input form-control tm-input-info" />
                </div>

                <button type="submit" name="add" id="add" class="btn btn-primary mt-4 pr-4 pl-4">Utwórz</button>
            </form>

и есть мой скрипт

<script>
        $(document).ready(function () {
            var tagApi = $(".tm-input").tagsManager({
                hiddenTagListName: 'hiddenTagListA'
            });
            var x = '';
            var test = '';


            jQuery(".typeahead").typeahead({
                name: 'source',
                displayKey: 'source',
                source: function (query, process) {
                    return $.get('ajaxpro.php', {
                        query: query
                    }, function (data) {
                        data = $.parseJSON(data);
                        console.log(data);
                        return process(data);
                    });
                },
                afterSelect: function (item) {
                    tagApi.tagsManager("pushTag", item);
                    x = document.getElementsByName("hiddenTagListA");
                    test = x[0].value;
                    console.log('to jest z afterSlect: ', test);
                }

            });
            $(".btn").click(function (e) {
                e.preventDefault();
                $.ajax({
                    type: "post",
                    url: 'new_alias.php',
                    data: {
                        $("#theForm").serialize()
                    },
                    success: function () {
                        alert("Form Submitted: ");
                    },
                });
            });
        }); 
    </script>

Я использую tagsManager, который создал скрытый ввод с идентификатором hiddenTagListA Я пытаюсь поместить все значения от hiddenTagListA довар test и все работает.Но теперь я хочу опубликовать эту переменную и в моем php, потому что я хочу поместить ее в мою БД.Взяв все значения из формы wok, но я также должен опубликовать test переменную.

В своей консоли я получаю значение из теста, например: something, something2, something3... (теги, разделенные запятой) Это может быть просто строка

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Если вы используете .serialize, то вам нужно сначала проанализировать строку, чтобы получить опубликованные данные с использованием AJAX.PHP-функция parse_str читает строку и преобразует ее в массив.

См .: http://php.net/manual/en/function.parse-str.php

Вы можете использовать функцию .serializeArray вместо .serialize, которая обеспечивает передачу данных в формате массива, которыйлегко извлекается в PHP с помощью переменной $ _POST.

JS CODE

$(".btn").click(function (e) {
    e.preventDefault();
    var inputData = $("#theForm").serializeArray(); // .serializeArray gives data in array format instead of string format.
    // you can insert new variables like below
    inputData.push({"name":"hiddenTagListA", "value": document.getElementsByName("hiddenTagListA")[0].value});
    $.ajax({
        type: "post",
        url: 'new_alias.php',
        data: inputData,
        success: function () {
            alert("Form Submitted: ");
        },
    });
});
0 голосов
/ 29 ноября 2018

если вы получили значение в test, просто поместите его в ajax

$(".btn").click(function (e) {
    e.preventDefault();
    $.ajax({
        type: "post",
        url: 'new_alias.php',
        data: {
            form: $("#theForm").serialize(),
            hiddenTagListA: test
        },
        success: function () {
            alert("Form Submitted: ");
        },
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...