Как заменить функцию php на ajax - PullRequest
1 голос
/ 16 мая 2019

Я новичок в AJAX здесь. Как я могу заменить начальную функцию php после выполнения действия ajax? Я обнаружил, что страница не будет обновляться после выполнения действия. Вот код:

Javascript

function set_ddm(another_data) {
    var result = $.ajax({
        url: '../display/ea_form_header.php',
        type: 'POST',
        data: {
            action: 'set_ddm',
            Data_store: another_data,
        },
        success: function(data) {
            console.log(data);

        }
    }).responseText;
}

php код

<td>
<?php 
//initial function (customized drop down)
print ddm_jsfunc_employee("employee_list",$employee_list)

set_ddm(data);

if($_POST['action'] =='set_ddm') {
    $employee_list=$_POST['Data_store'];    

    $employee_list_decoded = json_decode($employee_list,true);              

//expected this function to replace the initial function after ajax was called
print ddm_jsfunc_employee("employee_list",$employee_list_decoded);
} ?>
</td>

Я ожидаю, что функция заменит начальную функцию и покажет ее на главной странице, но она будет отображаться в консоли только после ajax (страница не обновляется, чтобы показать ее). Есть ли что-то не так с кодом или каким-либо решением для этого? (ddm_jsfunc_employee должен быть там, чтобы напечатать выпадающий список) заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

От обратного вызова ajax success вы должны установить этот ответ в html для просмотра на веб-странице.

вот так:

$('.elementClass').html(response);

я надеюсь, что это сработает для вас.

0 голосов
/ 16 мая 2019

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

Давайте сначала взглянем на .ajax-функцию , которая особенно интересна для нас сейчас - это метод обратного вызова .done(), потому что JavaScript выполняет запрос в реальном времени (асинхронный) JavaScript не знает, когда запрос выполнен , Но это позволяет нам указать функцию внутри .done, которую он будет вызывать, когда это будет сделано.

Очень простой пример:

$.ajax('https://stackoverflow.com')
.done(function(data) {
    // We can do what we want with the data here.
    console.log(data);
});

Теперь, когда запрос будет выполнен, будет вызвана функция, которую мы определили в .done, в данном случае простой журнал. Но вы бы хотели изменить это на функцию, которая обновляет ваш HTML.

Я также вижу, что вы вызываете функции JavaScript в вашем PHP, это не будет работать, поскольку PHP работает на вашем сервере, но JavaScript работает в вашем браузере. (Если вы не используете узел или лайки)

Просто чаевые; Рекомендуется размещать JavaScript внизу вашей HTML-страницы, так как JavaScript блокирует контент. (правильная ссылка, объясняющая необходимость здесь) Это означает, что ваш браузер прекратит синтаксический анализ HTML и запустит JavaScript, как он его обнаружит.

Короче говоря, если вы хотите заменить код PHP, вам придется удалить его. Сделайте PHP-скрипт, который даст вам ваши данные. Позвоните в AJAX, затем используйте .done или success и обновите свою веб-страницу оттуда.

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