如何从JavaScript函数中调用PHP类方法


How to call a PHP class method from a JavaScript function

可能重复:
从javascript 调用php函数

我知道php是服务器端,JavaScript是客户端。但我想知道如何在调用JavaScript函数时运行PHP方法。下面是我的代码,我知道错误是什么,但我该如何执行php方法?

 <script type="text/javascript">
            function toggle()
            {
                var ele = document.getElementById("addCatTextBox");
                var text = document.getElementById("addCatButtonText");
                if(ele.style.display == "block") {
                        ele.style.display = "block";
                    text.innerHTML = "Save category";
                    <?php Category::addCategory($inCatName)?>
                }
                else {
                    ele.style.display = "none";
                    text.innerHTML = "Add new category";
                }
            } 
    </script>

谢谢你的帮助。

使用原型库(www.prototypejs.org):

Javascript:

<script type="text/javascript">
  function toggle()
  {
      var ele = document.getElementById("addCatTextBox");
      var text = document.getElementById("addCatButtonText");
      if(ele.style.display == "block") {
              ele.style.display = "block";
          text.innerHTML = "Save category";
          var options={
            method: 'get',
            parameters: 'inCatName='+ele.value,
            onSuccess: function(xhr) {
                // TODO: Whatever needs to happen on success
                alert('it worked');
            },
            onFailure: function(xhr) {
                // TODO: Whatever needs to happen on failure
                alert('it failed');
            }
          };
          new Ajax.Request('addCategory.php', options);
      }
      else {
          ele.style.display = "none";
          text.innerHTML = "Add new category";
      }
  } 
</script>

addCategory.php:

<?php
$inCatName=isset($_REQUEST["inCatName"]) ? $_REQUEST["inCatName"] : null;
Category::addCategory($inCatName);
?>

其想法是,Javascript在后台向addCategory.php页面发送GET(也可以是POST)请求,向其传递创建类别所需的任何信息。

希望这足以让你继续前进。我的代码中缺少了很多内容——在将其放在数据库附近之前,您需要验证addCategory.php接收到的变量,并执行任何其他相关的安全检查。addCategory.php还需要任何include文件等,以便了解您的Category类。最后,addCategory.php应该真正将某种形式的变量返回给调用它的Javascript代码,以便它知道结果是什么。

您可以使用Ajax请求到触发PHP的端点,然后执行Category::addCategory($inCatName)

使用Jquery:

$.ajax({
  url: "addCategory.php",
  context: document.body,
  success: function(){
    // whatever you need to do
  }
});

这可能会有所帮助。使用ajax调用php文件(示例中使用了categories.php)。发送一个名为"function"的参数,并将其设置为"addCategory"。在php文件中,编写代码以检测是否设置了$_GET['function'],以及是否将其设置为"addCategory"。如果是,请让代码调用函数。我还看到您试图将$inCatName参数传递给php函数。要发送此信息,只需将其添加到下面的url中即可。

<script type="text/javascript">
        function toggle()
        {
            var ele = document.getElementById("addCatTextBox");
            var text = document.getElementById("addCatButtonText");
            if(ele.style.display == "block") {
                    ele.style.display = "block";
                text.innerHTML = "Save category";
                var xmlhttp;
                if (window.XMLHttpRequest) {
                    xmlhttp=new XMLHttpRequest();
                } else {
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.open("GET","categories.php?function=addCategory",true);
                xmlhttp.send();
            }
            else {
                ele.style.display = "none";
                text.innerHTML = "Add new category";
            }
        } 
</script>