单击按钮时我需要运行一些PHP函数。我知道这不应该是php的用法,而是js应该这样做,但我的功能是在用户提出要求时从服务器收集数据。具体来说,它获取一些用户数据并将其写入文件,用户应决定收集哪些数据
我怎样才能做到这一点?我看到帖子Run PHP File On Button Click,但我仍然不确定如何使用它。
我正在学习,所以请不要太苛刻
我尝试了onclick()
和各种各样的事情,但它没有带来任何有用的东西
答案 0 :(得分:13)
只要你通过HTTP请求访问它就会运行一个php文件,无论是GET,POST,PUT。
您可以使用JQuery / Ajax在按钮单击时发送请求,甚至只需更改浏览器的URL以导航到php地址。
根据POST / GET中发送的数据,您可以使用运行不同功能的switch语句。
您可以在此处使用以下代码:How to call PHP function from string stored in a Variable以及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
通过JQuery获取请求
请参阅:http://api.jquery.com/jQuery.get/
$.get("test.cgi", { name: "John"})
.done(function(data) {
alert("Data Loaded: " + data);
});
通过JQuery发布POST请求
请参阅:http://api.jquery.com/jQuery.post/
$.post("test.php", { name: "John"} );
通过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 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
答案 1 :(得分:3)
如果您想提出服务器请求,您应该使用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...?>
答案 2 :(得分:2)
使用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/
答案 3 :(得分:1)
<?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>
答案 4 :(得分:0)
在PHP文件上使用AJAX请求,然后在页面上显示结果,而不重新加载。
http://api.jquery.com/load/ 如果您不需要任何POST数据,这是一个简单的解决方案。
答案 5 :(得分:0)
这取决于您要运行的功能。如果您需要在服务器端完成某些操作,例如查询数据库或在会话中设置某些内容或在客户端无法完成的任何操作,则需要AJAX,否则您可以使用JavaScript在客户端执行此操作。 当你可以在客户端做你需要做的事情时,不要让服务器工作。
jQuery提供了一种简单的方法来执行ajax:http://api.jquery.com/jQuery.ajax/