Использовать сессию во внешнем js-файле - PullRequest
2 голосов
/ 09 марта 2019

Я хочу использовать сеанс во внешнем js-файле, но он не работает.Я знаю, что невозможно получить доступ к сеансу во внешнем AJAX-файле, но есть ли у кого-нибудь решение для этого?

Когда я вставляю код в мое представление, он работает правильно, более того, я думаю, что URL-адрес также неверен!Я использую CodeIgniter для серверной части.

function show_msg() {
    $.ajax({
        type: 'ajax',
        url: '<?php echo base_url(); ?>index.php/chat/showmsg',
        async: false,
        dataType: 'json',
        success: function (data) {
            var user = '<?php echo $this->session->userdata('username'); ?>';
            var html = '';
            var i;
            for (i = 14; i >= 0; i--) {
                if (data[i].user !== user) {
                    html +=
                            '<span style="color:green;font-size:12px;">' + data[i].user + '</span>' + ' ' + '<span style="color:dimgrey;font-size:10px;">' + data[i].date + '</span>' + '<div style="margin-right:25px;margin-bottom:25px;border:0px solid grey; border-radius: 0px 12px 12px 12px; padding:10px;width:auto;background-color:white;;box-shadow:0px 0px 0px 0px grey;direction:rtl;">' + data[i].msg + '</div>';
                } else {
                    html +=
                            '<span style="color:green;font-size:12px;">' + "" + '</span>' + ' ' + '<span style="color:dimgrey;font-size:10px;">' + data[i].date + '</span>' + '<div style="margin-left:30px;margin-bottom:25px;border:0px solid grey; border-radius: 8px 0px 8px 8px; padding:10px;width:auto;background-color:#bbf490;box-shadow:0px 0px 0px grey;direction:rtl;">' + data[i].msg + '</div>';
                }
            }
            $('#show_data').html(html);
        }
    });

}

1 Ответ

0 голосов
/ 09 марта 2019

Не существует прямого способа вставки переменных PHP во внешние файлы .js. Потому что PHP не анализирует JS-файлы. Быстрый и грязный способ - объявить переменную JS (осторожно объявить переменную из-за загрязнения глобальной переменной, используйте описательное имя) в файле вида php следующим образом.

     <script type="text/javascript">
        var session_user_id = '<?php echo $this->session->userdata('username'); ?>';
        var base_url = '<?php echo base_url(); ?>';
    </script>

и используйте эту переменную в вашем внешнем js-файле

        function show_msg() {
        $.ajax({
            type: 'ajax',
            url: base_url + 'index.php/chat/showmsg',
            async: false,
            dataType: 'json',
            success: function (data) {
                var user = session_user_id;
                var html = '';
                var i;
                for (i = 14; i >= 0; i--) {
                    if (data[i].user !== user) {
                        html +=
                                '<span style="color:green;font-size:12px;">' + data[i].user + '</span>' + ' ' + '<span style="color:dimgrey;font-size:10px;">' + data[i].date + '</span>' + '<div style="margin-right:25px;margin-bottom:25px;border:0px solid grey; border-radius: 0px 12px 12px 12px; padding:10px;width:auto;background-color:white;;box-shadow:0px 0px 0px 0px grey;direction:rtl;">' + data[i].msg + '</div>';
                    } else {
                        html +=
                                '<span style="color:green;font-size:12px;">' + "" + '</span>' + ' ' + '<span style="color:dimgrey;font-size:10px;">' + data[i].date + '</span>' + '<div style="margin-left:30px;margin-bottom:25px;border:0px solid grey; border-radius: 8px 0px 8px 8px; padding:10px;width:auto;background-color:#bbf490;box-shadow:0px 0px 0px grey;direction:rtl;">' + data[i].msg + '</div>';
                    }
                }
                $('#show_data').html(html);
            }
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...