11

单击按钮时,我需要运行一些 PHP 函数。我知道这不应该是 php 的用途,而 js 应该这样做,但是当用户询问时,我的函数在从服务器收集数据时正在做什么。具体来说,它获取一些用户数据并将其写入文件,用户应决定将收集哪些数据。
我怎样才能做到这一点?我看到了在按钮单击时运行 PHP 文件的帖子,但我仍然不确定如何使用它。
我正在学习,所以请不要太苛刻

我已经尝试onclick()了各种各样的东西,但它并没有带来任何有用的东西

4

6 回答 6

13

每当您通过 HTTP 请求(无论是 GET、POST、PUT)访问它时,都会运行一个 php 文件。

您可以使用 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

发送数据

通过 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)

请参阅 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

于 2013-04-11T20:06:24.533 回答
4

如果您想发出服务器请求,您应该使用 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

函数.php

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

一些.php

<?php include("functions.php");    
$Name = $_POST['name'];
$Location = $_POST['location'];

myFunction($Name, $Location);

// make what you want with these variables...?>
于 2013-04-11T20:06:49.883 回答
3

使用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/

于 2013-04-11T20:08:41.960 回答
2
<?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>
于 2013-10-13T08:31:07.493 回答
0

在您的 PHP 文件上使用 AJAX 请求,然后在您的页面上显示结果,无需重新加载。

http://api.jquery.com/load/ 如果您不需要任何 POST 数据,这是一个简单的解决方案。

于 2013-04-11T20:07:27.133 回答
0

这取决于您要运行什么功能。如果您需要在服务器端完成某些操作,例如查询数据库或在会话中设置某些内容或在客户端无法完成的任何操作,则需要 AJAX,否则您可以使用 JavaScript 在客户端完成。当您可以在客户端做您需要做的事情时,不要让服务器工作。

jQuery 提供了一种简单的 ajax 方法: http: //api.jquery.com/jQuery.ajax/

于 2013-04-11T20:08:13.117 回答