Как я могу получить кнопку для выполнения функции PHP без перезагрузки страницы? - PullRequest
0 голосов
/ 11 мая 2019

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

Я посмотрел на веб-сайте W3Schools, но не смог найти ничего, что сочетало бы их в себе.

Это код кнопки, которая меняет текст:

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $.ajax({url: "/ajaxtest.php", success: function(result){
      $("#div1").html(result);
    }});
  });
});
</script>
</head>
<body>
<div id="div1"><h2>Testing Button</h2></div>
    <button>boom</button>
    </body>

Это функция PHP, которая генерирует новую сумму (минимальный результат уравнения равен 2, а максимальный равен 20):

<?php
    $min = 1;
    $max = 10;
    $a = mt_rand($min, $max);
    $b = mt_rand($min, $max);

function sum(int $x, int $y) {
    $answer = $x + $y;
    return $answer;
}

echo "$a + $b = " . sum($a,$b) . "<br>";

echo $answer;
?>

ajaxtest.php просто содержит текст, который изменяет текст в div1. Я попытался вставить функцию в этот файл, но она ничего не делает.

Когда кнопка нажата, я ожидаю, что будет сгенерировано новое уравнение, которое заменит текст в div1, например, 1 + 2 = 3, а затем при повторном нажатии заменит прежнее уравнение новым уравнением, например, 4 + 5 = 6. Я не собираюсь хранить текст в div1, просто генерирую в нем числа. Спасибо.

1 Ответ

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

Ваш PHP-код выдает ошибку ...

Исправляемая фатальная ошибка: аргумент 1, передаваемый в sum (), должен быть экземпляром из int, задано целое число, вызывается в C: \ Users \ wayne \ Desktop \ 127.0.0.1 \ New Папка \ ajax \ ajaxtest.php в строке 13 и определена в C: \ Users \ wayne \ Desktop \ 127.0.0.1 \ Новая папка \ ajax \ ajaxtest.php на линии 8

...

Изменение функции на ...

function sum( $x, $y) {
    $answer = $x + $y;
    return $answer;
}

... устраняет ошибку и соглашается с вашим эхом, ясно, что 1,5 + 2,5 не будет равно 3.

echo "$a + $b = " . sum($a,$b) . "<br>";

Обновление ... Кстати, HTML работает на моей машине нормально. Но наличие сценария в нижней части страницы является текущей практикой, так как сценарий вверху блокирует рендеринг и чтение любых ссылок CSS, которые могут последовать.

Поскольку ajax является асинхронным, нет необходимости размещать его наверху.

Обновление Еще одно предложение, которое решило бы проблему для вас ...

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

Системе разработки требуется только установить php, используя ярлык со свойствами ...

C: \ PHP \ php.exe -S 0.0.0.0:80 -d extension = php_openssl.dll

... запускает веб-хостинг разработки PHP. Расширение явно не нужно, но может пригодиться.

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