Как бы я добавил к новой строке результаты при нажатии jquery

#php #arrays #ajax

#php #массивы #ajax

Вопрос:

У меня есть функция, которая на данный момент просто генерирует случайное число при нажатии кнопки. В настоящее время он просто переопределяет текущее сгенерированное число.

 <!DOCTYPE html>
<html>
<head>
    <title>Number Generator</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

</head>
<?php 
// $random_number_array = [];
    function generatedNumbers(){
        $random_number_array = range(0, 100);
        shuffle($random_number_array );
        $random_number_array = array_slice($random_number_array ,0,10);

        foreach ($random_number_array as $key => $value) {
           print_r($value);
        }

    }

    if (isset($_GET['run'])) {
    generatedNumbers();
  }
;
 ?>
<body>
    <a href='index.php?run=true'>Generate</a>
<p></p>
</body>
</html>

  

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

Комментарии:

1. Сохраните числа в массиве session / GET, и вы можете использовать random_int / rand для генерации случайных чисел.

2. Вам придется использовать jquery ajax для вызова вашей функции number при нажатии и использовать jquery append для добавления ее в dom. Вам нужно обновить свой вопрос с помощью javascript, который вы пробовали, если вам нужна помощь с кодом.

Ответ №1:

Решение 1:

Если вы хотите достичь желаемого результата, используя только PHP , вы можете следовать этому примеру:

HTML:

 <a href='index.php?run=true'>Generate</a>
  

PHP:

 <?php 
session_start(); // need to use session_start to store array in session.

function generatedNumbers(){
    $random_number_array = range(0, 100);
    shuffle($random_number_array);
    $random_number_array = array_slice($random_number_array,0,10);
    foreach ($random_number_array as $key => $value) {
       $myArray[] = $value; // store values in array
    }

    if(isset($_SESSION['data']) amp;amp; count($_SESSION['data']) > 0){
        $myArray = array_merge($_SESSION['data'],$myArray); // merge new and old array if exist in session.
    }

    $_SESSION['data'] = $myArray;    // reset the value in session.
    echo "<pre>";
    print_r($myArray);
}

if (isset($_GET['run'])) {
   generatedNumbers();
}
?>
  

Некоторое объяснение:

В PHP вы можете получить желаемый результат, используя session , вы можете сохранить все значения в массив, который затем вы можете использовать $_SESSION для следующего результата, в последнем вы можете объединить старые и новые данные вместе, используя array_merge()


Решение 2:

Вы также можете получить желаемый результат с помощью jQuery / Ajax:

Интерфейс:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<a href='javascript:void(0);' id="generate">Generate</a>

<div id="result"></div>

<script type="text/javascript">
    $(document).ready(function(){
        $("#generate").click(function(){
            $.ajax({
                url: "index2.php",
                type: "GET",
                data: "run=1",
                dataType: "html",  // Has to be false to be able to return response
                success: function(response) {
                    $("#result").html(response);
                }
            });  // JQUERY Native Ajax End
        });
    });
</script>
  

Теперь вам нужно вызвать, index2.php используя ajax, ваш index2.php следующий код:

index2.php:

 <?php 
session_start(); // need to use session_start to store array in session.
function generatedNumbers(){
    $random_number_array = range(0, 100);
    shuffle($random_number_array);
    $random_number_array = array_slice($random_number_array,0,10);
    foreach ($random_number_array as $key => $value) {
       $myArray[] = $value; // store values in array
    }

    if(isset($_SESSION['data']) amp;amp; count($_SESSION['data']) > 0){
        $myArray = array_merge($_SESSION['data'],$myArray); // merge new and old array if exist in session.
    }

    $_SESSION['data'] = $myArray;    // reset the value in session.
    echo "<pre>";
    print_r($_SESSION['data']);
}

if (isset($_GET['run'])) {
   generatedNumbers();
}
?>
  

Примечание сбоку: index.php и index2.php должно быть в том же каталоге.