在jQuery单击中运行php函数

时间:2011-05-24 21:10:33

标签: php javascript jquery

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

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

9 个答案:

答案 0 :(得分:25)

您无法在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); ?>

答案 1 :(得分:8)

首先,你应该了解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/

答案 2 :(得分:3)

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

答案 3 :(得分:3)

只需执行ajax请求然后执行PHP服务器端:

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

和php:

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

这就是你所需要的一切。

答案 4 :(得分:2)

为什么不在服务器端调用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中。如果你能避免这种做法,那就更好了。

希望有所帮助

答案 5 :(得分:1)

JavaScript - 客户端。

PHP - 服务器端。

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

答案 6 :(得分:1)

你必须这样做:

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

答案 7 :(得分:0)

您可以从支持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并将其保存在一个文件中。

答案 8 :(得分:-1)

Buddy,首先要了解jquery是客户端编程语言,它运行在客户端浏览,Php运行在webserver上。将php代码复制到php文件中,并使用

$.ajax();