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

时间:2012-01-13 20:42:02

标签: php javascript

  

可能重复:
  Call php function from javascript

据我所知,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>

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

使用Prototype库(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还需要任何包含文件等,以便它知道你的Category类。最后,addCategory.php应该真正将某种形式的变量返回给调用它的Javascript代码,以便它知道结果是什么。

答案 1 :(得分:0)

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

使用Jquery:

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

答案 2 :(得分:0)

这可能会有所帮助。使用ajax来调用php文件(在示例中使用了categories.php)。发送一个名为“function”的参数并将其设置为“addCategory”。在你的php文件中编写代码来检测是否设置了$ _GET ['function']并检测它是否设置为“addCategory”。如果是,请让代码调用该函数。我还看到你试图将$ inCatName参数传递给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";
                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>