3

我有一个关于 PHP 函数、jQuery 和 AJAX 的问题。如果我的 php 索引中有一个按钮,如下所示:

    <input type="submit" value="Download" id="download"/>

我还有另一个 php 文件(dubs.php),其中包含:

<?php
function first(){
    echo 'first';
}
function second(){
    echo 'second';  
}
?>

还有我的 jQuery,像这样:

$(document).ready(function(e) {
    $("#download").click(function(){
        $.ajax({
            type: "GET",
            url: "dubs.php",
        });
    });
});

如何告诉我的 AJAX 请求选择例如第二个函数?

我不知道如何做到这一点,我已经尝试过"success: first()"或尝试过,"success: function(){ first() }"但没有奏效。

4

5 回答 5

14

在你的 ajax 中传递一些参数来确定你想像这样使用哪个函数

    $("#download").click(function(){
        $.ajax({
            type   : "POST",//If you are using GET use $_GET to retrive the values in php
            url    : "dubs.php",
            data   : {'func':'first'},
            success: function(res){
              //Do something after successfully completing the request if required
            },
            error:function(){
              //If some error occurs catch it here
            }
        });
    });

在你的 php 文件中

您可以通过 ajax 检索data发送中的值并执行以下操作

if(isset($_POST['func']) && $_POST['func']=='first'){
    first();
}
else{
    second();
}
于 2013-06-03T10:03:29.910 回答
1

这就是我要做的:

你的PHP:

<?php

function first(){
    echo 'first';
}

function second(){
    echo 'second';  
}



  if (isset($_POST["first"])) first();
  if (isset($_POST["second"])) second(); //add 'else' if needed

?>

你的jQuery:

$.post("dubs.php", {"first":true}, function(result) {
  $("#someDivToShowText").text(result);
});

然后,根据您发送到的对象$.post,php 文件将知道要运行哪个函数。

于 2013-06-03T10:07:16.710 回答
1

在你的 PHP 页面中试试这个:

<?php

function first(){
    echo 'first';
}

function second(){
    echo 'second';  
}
switch($_POST['func']) {
    case "first":
    first();
    break;
    case "second":
    second();
    break;
    default:
    // Define your default here }
?>

这在你的 JS 中:

$(document).ready(function(e) {

    $("#download").click(function(){
        $.ajax({
            type: "GET",
            url: "dubs.php",
            data: {'func':'first'}
        });
    });

func变量将告诉 php 运行哪个函数!

});

于 2013-06-03T10:07:17.967 回答
1

为什么不尝试通过data:{func:f1}并在 php 端获取它,如果f1存在则触发第一个函数。虽然您可以发送多个:

jQuery:

$("#download").click(function(e){
    e.preventDefault(); // <----stops the page refresh
    $.ajax({
        type: "GET",
        url: "dubs.php",
        data:{'func':'f1'}
    });
});

PHP:

<?php

  function first(){
     echo 'first';
  }

  function second(){
     echo 'second';  
  }


if(isset($_GET['func']=='f1'){
     first();
}else{
     second();
}

?>
于 2013-06-03T10:10:48.143 回答
1

JS

$("#download").click(function(){
    $.ajax({
        type: "GET",
        url: "dubs.php",
        data: {'function':'first'}
    });
});


PHP

call_user_func($_GET['function']);


注意
参数 要小心$_GET,最好先检查$_GET

于 2013-06-03T10:19:03.470 回答