【问题标题】:Run php function inside jQuery click在 jQuery click 中运行 php 函数
【发布时间】:2011-09-01 07:05:56
【问题描述】:

如何在 jQuery 点击事件中运行 PHP 函数。我有以下不正确的。当用户点击一个按钮时,我想直接创建一个新的。

$('button').click(function(){
  <?php mkdir('/test1/test2', 0777, true); ?>
  return false;
})

【问题讨论】:

  • Far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far了太多的问题......
  • @marc,您发布的副本与问题无关。感谢所有回答的人。
  • 它与您的问题有关。机制可能不同,但最终结果是相同的。
  • @marc 您发布的 dup 链接对我没有帮助。下面的答案做到了。如果您浪费时间回答问题而不是批评,那将不会更有用

标签: php javascript jquery


【解决方案1】:

您不能在 jquery 函数中运行 PHP 代码。 PHP 在服务器端运行,而 jquery/javascript 在客户端运行。但是,您可以使用 jquery 请求 PHP 页面,并且该页面上的 PHP 代码将运行您想要的 mkdir。

JS:

$.ajax({
  url: 'test.php',
  success: function(data) {
    alert('Directory created');
  }
});

test.php 文件:

 <?php mkdir('/test1/test2', 0777, true); ?>

【讨论】:

    【解决方案2】:

    首先您应该了解 php 的工作原理(无意冒犯,但这是必不可少的)。 Why PHP script is not workig in a web browser? 要完成您需要的工作,您必须使用 ajax(使用 javascript 在服务器上请求脚本)

    PHP 文件(createdir.php):

    <?php 
        mkdir('/test1/test2', 0777, true); 
    ?>
    

    JavaScript 代码:

    $('button').click(function() {
        $.ajax({
            url: 'createdir.php',
            success: function(){
                 alert('dir created');
            }
        });
    
        return false;
    });
    

    我还没有验证代码是否真的有效。如果您遇到任何问题,您应该查看 jquery 文档(这太棒了:-))http://api.jquery.com/jQuery.ajax/

    【讨论】:

      【解决方案3】:

      您在这里混淆了客户端和服务器端代码。当用户单击按钮时,PHP 代码已经在服务器上执行,因此不会发生任何事情。您可以为此使用 xmlhttprequest(或 ajax)。

      【讨论】:

        【解决方案4】:

        只需做一个ajax请求,然后执行PHP服务器端:

        $('button').click(function(){
          $.ajax({url: 'mkdir.php'});
          return false;
        })
        

        和 php:

        <?php mkdir('/test1/test2', 0777, true); ?>
        

        这就是你所需要的。

        【讨论】:

          【解决方案5】:

          为什么不在服务器端调用 ajax 函数呢? 你可以这样做:

          $('button').click(function()
          {
            $.ajax
            ({
              type: "POST",
              url: "some.php",
              data: "val1:value&lvaln:valn",
              success: function(msg)
              {
               alert( "Data Saved: " + msg );
              }
            });
           return false;
          });
          

          文档here

          尽量不要将php代码嵌入到html中。如果你能避免这种做法,那就更好了。

          希望对你有帮助

          【讨论】:

            【解决方案6】:

            JavaScript - 客户端。

            PHP - 服务器端。

            您需要发出某种 AJAX 调用才能与服务器通信。 JavaScript 无法在您的远程服务器上创建目录(否则这将是一个巨大的安全漏洞)。

            【讨论】:

              【解决方案7】:

              你必须做的:

              //mkdir.php
              
              <?php mkdir('/test1/test2', 0777, true); ?>
              
              <script>
              $('button').click(function(){  $('#hidden').load('mkdir.php'); return false; }) 
              </script>
              
              <div id='hidden' style='display:none;'></div>
              

              【讨论】:

                【解决方案8】:

                您可以从支持 AJAX 的框架中受益匪浅。

                作为 Agile Toolkit 的作者,我可以推荐您尝试一下,代码如下所示:

                $button=$page->add('Button');
                if($button->setLabel('Create Directory')->isClicked()){
                
                    if(mkdir('/tmp/123', 0777, true)){
                        $button->js()->univ()->alert('Directory Created');  // executes JS code
                    }else{
                        $button->js()->univ()->alert('Problem');  // executes JS code
                    }
                }
                

                其他框架可能会提供其他方法来简化 AJAX 并将其保存在一个文件中。

                【讨论】:

                  【解决方案9】:

                  伙计,首先要了解 jquery 是一种客户端编程语言,它在客户端浏览器上运行,Php 在网络服务器上运行。将 php 代码复制到 php 文件中,并使用 jquery 创建对 php 文件的请求

                  $.ajax();
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2022-01-12
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-28
                    • 2014-05-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多