Функция JQuery / AJAX for PHP - несколько выходов - PullRequest
0 голосов
/ 22 октября 2019

СМОТРИТЕ РЕДАКТИРОВАТЬ ДЛЯ БОЛЬШЕ ТЕКУЩЕЙ ИНФОРМАЦИИ

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

Ниже вы увидите два файла (ajax_test.php & ajax_test2.php). Первый - это инициализация некоторых значений, которые будут использоваться в диаграмме (vals_a, vals_b, vals_c). Эти значения отправляются клиенту только один раз. Кнопка (TEST) при нажатии запускает функцию js test(), которая должна destroy текущий график и начинает наш запрос ajax. Запрос должен вызвать функцию php (test2()). Эта функция в настоящее время пуста, потому что все, что я пытался сделать, было неверным. То, что должна делать эта функция (test2()), теперь устанавливает мои js переменные (vals_a, vals_b, vals_c) в значения $new_a, $new_b, и $new_c. Как только это будет сделано, последняя часть моей функции ajax success должна заново создать диаграмму с нашими новыми значениями, используя draw()

ajax_test.php

<?php
$vals_a = [1,2,3];
$vals_b = [4,5,6];
$vals_c = [7,8,9];
$i=false;
while($i!==true){
    echo '<script> var vals_a = '.json_encode($vals_a).';</script>';
    echo '<script> var vals_b = '.json_encode($vals_b).';</script>';
    echo '<script> var vals_c = '.json_encode($vals_c).';</script>';
    echo '<script>console.log(vals_a);</script>';
    echo '<script>console.log(vals_b);</script>';
    echo '<script>console.log(vals_c);</script>';
    $i=true;
}
?>
<button onclick="test()">TEST</button>
<script src="vendor/jquery/jquery.min.js"></script>
<script>
function test(){
    chart.destroy();
    $.ajax({
        url:"ajax_test2.php",
        type: "POST",
        data: {call: "test2"},
        success: function(output){
            //missing steps ..  
            //
            // should accept new vals
            //
            console.log(vals_a);//should = $new_a
            console.log(vals_b);//should = $new_b
            console.log(vals_c);//should = $new_c
            draw();
        }
    }); 
}
</script>

ajax_test2.php

<?php
$new_a = [9,8,7];
$new_b = [6,5,4];
$new_c = [3,2,1];
if(isset($_POST['call'])){
    if($_POST['call']=='test2'){
        test2($new_a, $new_b, $new_c);
    }
}

function test2(){
    //missing steps...
    //
    //s
}
?>

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

Первоначально я ожидал, что смогу установить значения с помощью test2 изатем echo их при отправке моего output на определенный div, а затем воссоздание диаграммы с этими новыми значениями. Однако новый график все еще использовал предыдущие значения. Когда я добавил свой console.log(*my var*) в конце моего success, он все еще показывал и предыдущие значения, но мой div содержал правильные значения`.

В конечном итоге я просто хочу использовать ajax чтобы вызвать php функцию, чтобы изменить мои js значения и затем перезагрузить мои диаграммы с правильными значениями.

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

Итак, я сделал этоизменения:

ajax_test.php

    ...
    success: function(output1, output2, output3){
        console.log(output1);
        console.log(output2);
        console.log(output2);

    }
    ...

ajax_test2.php

...
function test2($new_a,$new_b,$new_c){
    echo (json_encode($new_a));
    echo (json_encode($new_b));
    echo (json_encode($new_c));
}
...

теперь мои console.log спо моему success возвращает следующее:

[9,8,7] [6,5,4] [3,2,1]

success

успех

Это несколько лучше. Как отметил пользователь @David в комментариях, для меня может быть более выгодно структурировать мои исходные данные в формате json. Прежде чем я попытаюсь это сделать, есть ли способ поработать с моей текущей структурой и разделить выходные данные?

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