用PHP调用JavaScript

用PHP调用JavaScript,php,javascript,function,Php,Javascript,Function,我想在按下按钮时调用PHP函数,类似于: <?php function output(){ // do something } ?> <input type="button" value="Enter" onclick="output()"/> 我试着做一些像: <input type="button" value="Enter" onclick="test.php?execute=1"/> 其中test.php是当前页面,然后是php &

我想在按下按钮时调用PHP函数,类似于:

<?php 
function output(){
  // do something
}
?>

<input type="button" value="Enter" onclick="output()"/>

我试着做一些像:

<input type="button" value="Enter" onclick="test.php?execute=1"/>

其中test.php是当前页面,然后是php

<? if(isset(&execute)){ echo "Hello"; } ?>


但它不起作用

PHP是服务器端,javascript是客户端。所以我不确定这是否真的是你想要做的


也许您可以解释一下为什么要专门调用php函数?

由于php在Web服务器上运行,并且客户端上出现了按钮(本例中还有JavaScript),因此您必须向服务器发出HTTP请求


做到这一点最简单的方法是使用。不需要JavaScript。您可以添加JavaScript(尽管它应该是)。使用JavaScript在不离开页面的情况下发出HTTP请求称为Ajax,通常通过对象实现。有各种各样的库,例如和,可以为您完成一些繁重的工作。

我从按钮中搜索了PHP函数,并在webdeveloper.com上找到了它


它不使用Javascript。

这是您谈论的PHP,而不是ASP.NET。在PHP中,没有按钮单击事件。PHP完全在服务器上运行,完全不了解客户端事件

您的第一次尝试将不起作用,因为PHP代码仅在页面首次加载时运行。当您调用JavaScript函数时,它不会运行。您的第二个示例不起作用,因为JavaScript和PHP不能像那样直接对话。试图直接从JavaScript调用PHP函数是没有意义的。记住,PHP只在服务器上运行。当您到达JavaScript可以运行的位置时,PHP代码早已完成了它的工作

如果要在单击按钮时执行某些操作,则必须显式地向服务器发出请求。您可以按照CTphpnwb的建议发布表单。请注意,这将重新加载页面,您必须手动保存和恢复页面状态,例如重新填充输入框。没有内置的魔法可以帮你做到这一点

或者,您可以获得所有AJAXy并使用JavaScript发布文章。但是,您必须编写JavaScript来发送请求和处理响应,并编写服务器端PHP代码来处理请求。在一个页面中这样做会有点尴尬


From:

我认为使用AJAX调用可以满足您的要求。我对PHP不太了解,但您可以使用以下示例,添加另一个变量,其中包含要传递到服务器的数据,以指示要在服务器上调用的函数。在服务器上,您可以添加一些“IF”语句,这些语句将根据传入的名称调用某个函数并返回结果

以下是您可以在javascript客户端上使用的内容,使用作为帮助程序来执行AJAX调用:

    <input type="button" value="Enter" onclick="output()"/>
    <script type="text/javascript">
function output(){
    $.ajax({
        type: "POST",
        url: "submit_data.php",
        data:   "username=" + "SomeUser" 
        +   "&email=" + "someEmail@google.com"
                    +       "&functionName=" + "theFunction1",
        success: function(html){
            alert('sucess!  Result is:' + html);
        }
    });

    }   
</script>

函数输出(){
$.ajax({
类型:“POST”,
url:“submit_data.php”,
数据:“username=“+”SomeUser”
+“&email=“+”someEmail@google.com"
+“&functionName=“+”函数1”,
成功:函数(html){
警报('success!结果为:'+html);
}
});
}   
您可以使用这样的代码来捕获javascript传递的数据。在本例中,您希望将此文件名称为“submit_data.php”,以匹配上面的javascript:

<?php

    // Variables

    $Username = $_POST['username'];
    $Email    = $_POST['email'];    
    $FunctionName = $_POST['functionName'];

    //Add code here to choose what function to call and echo the result
    // If $FunctionName equals 'theFunction1' then execute theFunction1
    // If $FunctionName equals 'theFunction2' then execute theFunction2

    echo "You called A Page!";

?> 


在这里,我对“用户名”和“电子邮件”什么也不做,只是简单地抓取它并将它们存储到保持变量中。但您可以在此处轻松添加额外功能,例如检查要运行的函数的名称。

您不能通过以下方式直接从Javascript调用PHP函数:

  • PHP代码在服务器上执行
  • HTML/Javascript在客户端进行解释
一旦HTML页面生成并发送到客户端(浏览器),PHP就无能为力了

一种解决方案是使用Ajax请求:

  • onclick事件将调用一个Javascript函数
  • 这个Javascript函数将启动一个Ajax请求:一个发送到服务器的请求
  • 然后服务器将执行一些PHP代码
  • 然后,将执行结果返回给客户端
  • 您可以在Javascript代码中获得该结果,并根据服务器返回的内容进行操作
有很多解决方案可以执行Ajax请求:

  • 你可以重新发明轮子;我应该说,没有那么复杂,但请看下一点
  • 如果已经在使用Javascript框架,比如jQuery、Prototype。。。它们提供类/方法/函数来执行Ajax请求

谷歌搜索一下,你会得到很多关于这方面的教程/例子;-)

我喜欢你的答案,但它需要更新以指出你正在使用jQuery库。为什么这被否决了?它说的与其他帖子类似的事情只是稍微多一些细节——有些人是奇怪的生物。这就是我现在知道的。