Передача массива PHP в функцию AJAX (успех) - PullRequest
0 голосов
/ 16 марта 2020

Я хочу передать массив моей функции AJAX в функции успеха вызова AJAX. Этот массив представляет собой данные из моей базы данных, используя global $wpdb;, потому что это легко использовать, и я знаю, как это сделать. Есть ли способ передать этот массив в функцию AJAX? Или есть способ просто получить данные в AJAX?

Я получил это в своем теге сценария, и он работает:

    jQuery(document).ready(function(){

        jQuery('#date-select').on('change',function(){

        var seldate= jQuery(this).val();


        if(seldate!=''){

            var seldateEdited = seldate.replace("T", " ");

            jQuery.ajax({

                type:'POST',

                url:'http://esr-berlin.de/wp-admin/admin.php?page=einteilung_erstellen',

                data:'var='+seldate,

                success:function(html){

                            var output = '<option value="">Wähle HSR1</option>';

                            jQuery.each(html.data, function(i,s){
                                var newOption = s;

                                output += '<option value="' + newOption + '">' + newOption + '</option>';
                            });

                            jQuery('#hsrPop').empty().append(output);


                     }

            }); 

        }

    });
});

РЕДАКТИРОВАТЬ

Я забыл что-то важное. Для массива или особенно для запроса sql мне нужна переменная, которая есть в javascript. Так что мне нужен еще один AJAX звонок, верно? Как бы я это сделал?

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Предполагается, что ваш код на стороне сервера (admin. php) выглядит примерно так: -

$result = array();

//your code here to fetch data dynamically

$result['status'] = True; //based on your conditions optional
$result['data'] = array(0=>"option1",1=>"option2",2=>"option3") ;
echo json_encode($result);

Надеюсь, это поможет.

jQuery(document).ready(function()
{
        jQuery('#date-select').on('change',function()
        {
            var seldate= jQuery(this).val();
                if(seldate!='')
                {
                    var seldateEdited = seldate.replace("T", " ");
                    jQuery.ajax({
                                        type:'POST',
                                        dataType:'json',         //added to receive json format data
                                        url:'http://esr-berlin.de/wp-admin/admin.php?page=einteilung_erstellen',
                                        data:'var='+seldate,
                                        success:function(html)
                                        {     
                                         //here you can check if html.status is True/False .. optional
                                                var output = '<option value="">Wähle HSR1</option>';
                                                jQuery.each(html.data, function(i,s)
                                                {
                                                    var newOption = s;
                                                    output += '<option value="' + newOption + '">' + newOption + '</option>';
                                                });
                                                jQuery('#hsrPop').empty().append(output);
                                         }

                                }); 

                }

        });
});
0 голосов
/ 16 марта 2020

Вы можете закодировать массив в файл PHP и вернуть его. Он просто вернет строку вашей AJAX функции

json_encode($array)

https://www.php.net/manual/en/function.json-encode.php

Затем вы можете использовать ее для преобразования в массив Javascript для обработка

JSON.parse(json)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

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