Запустите функцию PHP на кнопке html

Мне нужно запустить некоторую функцию PHP при нажатии кнопки. Я знаю, что это не должно быть использование php, скорее js должен это сделать, но то, что мои функции делают при сборе данных с сервера, когда пользователь спрашивает об этом. В частности, он получает некоторые пользовательские данные и записывает их в файл, и пользователь должен решить, какие данные будут собраны.
Как я могу это сделать? Я видел сообщение « Запустить PHP File On Button Click», но я все еще не уверен, как его использовать.
Я учусь, поэтому, пожалуйста, не будьте слишком суровы

Я пробовал onclick() и всевозможные вещи, но это не привело ни к чему полезному

Файл php запускается всякий раз, когда вы обращаетесь к нему через HTTP-запрос: GET, POST, PUT.

Вы можете использовать JQuery / Ajax для отправки запроса нажатием кнопки или даже просто изменить URL-адрес браузера, чтобы перейти к php-адресу.

В зависимости от данных, отправленных в POST / GET, вы можете иметь оператор switch, выполняющий другую функцию.

Определение функции через GET

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

Итак, на стороне PHP вы можете иметь что-то вроде этого:

 <?php //see http://php.net/manual/en/function.call-user-func-array.php how to use extensively if(isset($_GET['runFunction']) && function_exists($_GET['runFunction'])) call_user_func($_GET['runFunction']); else echo "Function not found or wrong input"; function test() { echo("test"); } function hello() { echo("hello"); } ?> 

и вы можете сделать простейший запрос получения с помощью адресной строки в качестве тестирования:

 http://127.0.0.1/test.php?runFunction=hellodddddd 

результаты:

 Function not found or wrong input http://127.0.0.1/test.php?runFunction=hello 

результаты:

 hello 

Отправка данных

Запрос GET через JQuery

См. http://api.jquery.com/jQuery.get/

 $.get("test.cgi", { name: "John"}) .done(function(data) { alert("Data Loaded: " + data); }); 

Запрос POST через JQuery

См .: http://api.jquery.com/jQuery.post/

 $.post("test.php", { name: "John"} ); 

Запрос GET через местоположение Javascript

См .: http://www.javascripter.net/faq/buttonli.htm

 <input type=button value="insert button text here" onClick="self.location='Your_URL_here.php?name=hello'"> 

Чтение данных (PHP)

См. PHP Turotial для чтения сообщения и получения: http://www.tizag.com/phpT/postget.php

Полезные ссылки

http://php.net/manual/en/function.call-user-func.php http://php.net/manual/en/function.function-exists.php

Если вы хотите сделать запрос на сервер, вы должны использовать AJAX, чтобы вы могли отправлять желаемые параметры на сервер, и он может запускать любой php, который вы хотите, с этими параметрами.

Пример с чистым javascript:

 <input type="text" id="name" value="..."/> <input type="text" id="location" value="..."/> <input type="button" onclick="ajaxFunction();" value="Submit" /> <div id="ajaxDiv"></div> <script type="text/javascript"> function ajaxFunction(){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } // Create a function that will receive data sent from the server ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){ var ajaxDisplay = document.getElementById('ajaxDiv'); ajaxDisplay.innerHTML = ajaxRequest.responseText; } } var name = document.getElementById('name').value; var location = document.getElementById('location').value; var queryString = "?name=" + name + "&location=" + location; ajaxRequest.open("POST", "some.php" + queryString, true); ajaxRequest.send(null); } </script> 

Пример с jQuery Ajax: http://api.jquery.com/jQuery.ajax/

 $.ajax({ type: "POST", url: "some.php", data: { name: "John", location: "Boston" } }).done(function( msg ) { alert( "Data Saved: " + msg ); }); 

У вас может быть один файл с функциями, называемыми например functions.php

functions.php

 <?php myFunction($Name, $Location) { // etc... } myFunction2() { } // ... many functions ?> 

some.php

 <?php include("functions.php"); $Name = $_POST['name']; $Location = $_POST['location']; myFunction($Name, $Location); // make what you want with these variables...?> 

Используйте ajax, простой пример,

HTML

 <button id="button">Get Data</button> 

Javascript

 var button = document.getElementById("button"); button.addEventListener("click" ajaxFunction, false); var ajaxFunction = function () { // ajax code here } 

В качестве альтернативы можно просмотреть jquery ajax http://api.jquery.com/jQuery.ajax/

 <?php if (isset($_POST['str'])){ function printme($str){ echo $str; } printme("{$_POST['str']}"); } ?> <form action="<?php $_PHP_SELF ?>" method="POST"> <input type="text" name="str" /> <input type="submit" value="Submit"/> </form> 

Используйте AJAX-запрос в вашем файле PHP, а затем покажите результат на своей странице без какой-либо перезагрузки.

http://api.jquery.com/load/ Это простое решение, если вам не нужны данные POST.

Это зависит от того, какую функцию вы хотите запустить. Если вам нужно что-то сделать на стороне сервера, например, запросить базу данных или установить что-то в сеансе или что-то, что не может быть сделано на стороне клиента, вам нужен AJAX, иначе вы можете сделать это на стороне клиента с помощью JavaScript. Не делайте работу сервера, когда вы можете делать то, что вам нужно делать на стороне клиента.

jQuery предоставляет простой способ сделать ajax: http://api.jquery.com/jQuery.ajax/