передать myArray с помощью ajax в php - PullRequest
0 голосов
/ 24 ноября 2018

Здравствуйте, я пытаюсь передать массив myArray в php.

<script type = "text/javascript" >
    $(document).ready(function () {
        var tagApi = $(".tm-input").tagsManager();
        var myArray = [];


        jQuery(".typeahead").typeahead({
            name: 'email',
            displayKey: 'email',
            source: function (query, process) {
                return $.get('Data.php', {
                    query: query
                }, function (data) {
                    data = $.parseJSON(data);
                    console.log(data);
                    return process(data);

                });
            },
            afterSelect: function (item) {
                tagApi.tagsManager("pushTag", item);
                myArray.push(item);
                console.log('This is myArray', myArray);
            }


        });

        $.ajax({
            type: "POST",
            url: "Data.php",
            data: {
                myArray: myArray
            },
            success: function () {
                $("#submit").submit();
            }
        });
    }); 
</script>

Но когда я пытаюсь получить myArray, например:

<?php $myArray = $_REQUEST['myArray']; 
echo "This is myArray: ".$myArray; 
?>

Я вижу только эхо Это моеМассив без каких-либо данных из myArray.Как мне передать myArray, чтобы получить его в php?

Submit - моя кнопка, получившая id submit.После отправки формы я просто хочу передать myArray и получить его в своем php-файле.

Или, может быть, я что-то делаю не так, и просто myArray пуст?Мой console.log работает хорошо, и я могу видеть все данные из myArray

Редактировать: есть раздел HTML

<form action="Data.php" method="post" id="submit">

    <div class="form-group">
        <label>Add Tags:</label><br />
        <input type="text" name="email" placeholder="Email" autocomplete="nope" autocomplete="off" class="typeahead tm-input form-control tm-input-info" />
    </div>

    <div class="form-actions form-group"><button type="submit" value="add" name="add" class="btn btn-success btn-block">Utwórz</button></div>
</form>

1 Ответ

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

Вы вызываете ajax внутри .ready (), что означает, что он позвонит, как только ваш документ будет полностью загружен.Вы должны вызвать ajax, когда пользователь нажимает кнопку отправки

Попробуйте это

  <script type = "text/javascript" >
  $(document).ready(function () {
    var tagApi = $(".tm-input").tagsManager();
    var myArray = [];


    jQuery(".typeahead").typeahead({
        name: 'email',
        displayKey: 'email',
        source: function (query, process) {
            return $.get('Data.php', {
                query: query
            }, function (data) {
                data = $.parseJSON(data);
                console.log(data);
                return process(data);

            });
        },
        afterSelect: function (item) {
            tagApi.tagsManager("pushTag", item);
            myArray.push(item);
            console.log('This is myArray', myArray);
        }


    });

  $(".btn").click (function (e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: "Data.php",
        data: {
            myArray: myArray
        },
        success: function () {
            $("#submit").submit();
        }
    });
   });
}); 

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