Я хочу запустить функцию PHP с помощью кнопки HTML.
Я могу вызвать скрипт PHP таким образом:
<form action="action.php" method="post"> Name: <input type="text" name="txt"/> <input type="submit" /> </form>
Но я не хочу ссылаться на «action.php». Я просто хочу назвать функцию PHP, определенную на этой странице. Это можно сделать?
Метод, который я предпочитаю использовать, представляет собой смесь jQuery / ajax, вызывающую объект-ориентированный класс PHP.
У меня есть слушатель jQuery / триггер для нажатия кнопки с чем-то вроде этого:
$('#buttonId').live('click', function() { $.get('api.php?functionName=test&inputvar=something'); return false; });
-$('#buttonId').live('click', function() { $.get('api.php?functionName=test&inputvar=something'); return false; });
Это вызовет файл api.php через ajax и предотвратит любые дальнейшие действия, такие как отправка формы.
Затем в файле PHP вы всегда можете сделать что-то основное:
if ($_REQUEST['functionName'] == 'test') { test(); }
или если у вас есть огромные классы и много динамического ввода, вы можете сделать что-то более интересное, например:
$functionName = $_REQUEST['functionName']; if (method_exists($myClassInstance, $functionName)) $myClassInstance->$functionName();
Есть много способов приблизиться к этому, но это мои любимые. Другой альтернативой является структура Extjs, которая построена для такого рода деятельности, но если вы уже не знакомы с ней и проект не «огромный», я бы не стал заниматься этим.
Наконец, если вам нужно получить ответ от php-файла, например json-результатов, вместо использования функции jQuery: $.get()
используйте функцию $.getJSON
Надеюсь, это поможет 🙂
Вам нужно сделать это с вашей стороны. Обработайте сообщение и вызовите функцию на странице action.php самостоятельно. Вы также можете создать отдельную страницу php для вызова функции, определенной в файле action.php.
Вы можете легко сделать это с помощью jquery
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> <script type="text/javascript"> function submitform(){ $('#myForm').post("pageName.php", $("#myForm").serialize()); } </script> </head> <form action="pageName.php" method="post" id"myForm"> Name: <input type="text" name="txt"/> <input type="submit" /> </form>
Это не сработает. PHP обрабатывается до тех пор, пока пользователь обрабатывает страницу. Вы должны использовать AJAX для отправки данных на сервер и получения ответа.
У вас могут быть следующие подходы:
1> Используйте AJAX для загрузки «action.php» с данными, введенными в поля как POST на страницу, а затем возьмите ответ и поместите его в тело; или,
2> Вы не можете заставить его работать, поскольку PHP является языком программирования на стороне сервера и HTML, который вы пытаетесь использовать с PHP, является языком программирования на стороне клиента. Таким образом, нет возможности заставить его работать, кроме AJAX.
Это немного сложно. Вы можете либо отправить форму себе, проверьте, установлена ли переменная post (если она есть, то страница выполняется, поскольку форма была отправлена), либо вы можете использовать ajax. Первое – это более легкое решение, а второе не требует перезагрузки страницы. Выбрать свой яд 😉
Посмотрите на это для первого решения и посмотрите на функции ajax jquery для второго.
Вы должны включить a.php В action.php, например:
action.php:
include( 'a.php' ); //Your codes
если вы хотите, например, функцию ok () в a.php, теперь a.php существует в action.php
Вы можете попробовать:
<form action="pageName.php/functionName" method="post"> Name: <input type="text" name="txt"/> <input type="submit" /> </form>