对包含在同一页面上的php函数进行ajax调用

时间:2013-12-03 08:31:06

标签: php ajax

我的问题可能听起来很旧,已经回答了你,但我没有找到令人满意的答案。让我清楚地解释一下我的情景,

我得到像这样的index.php

的index.php

<?php   
    inlcude("connect.php");   
    include("functions.php");   
?>

<html>   
    $(document).ready(function() {    
        $('#button').click(function() {    
            $.ajax({    
                type: 'GET',    
                data: 'method=test',    
                success: function(data) {    
                    alert(data);    
                }
            });    
        });    
    });
</html>

我没有在ajax调用中传递URL,但我成功获得了数据警报,但整个页面从<html></html>。当我向functions.php提供url时,我在警告框中获得了预期的输出。

我希望你的家伙对我的问题有一个很好的猜测。我的问题是我需要调用functions.php中已包含在index.php页面中的函数。我不想在ajax'URL中再次使用functions.php:'因为functions.php将被调用两次。这是为了避免服务器负载。

让我,你伙伴提出有趣的想法。

谢谢。

3 个答案:

答案 0 :(得分:5)

扩展Quentin的说法,你不能直接从Ajax请求中调用php函数,但你可以通过GET&amp; POST数据到PHP脚本并执行if或switch语句来调用你的函数,所以你可以这样做......

//你的Ajax电话

$.ajax(
{

      type:'GET',
      url:'functions.php',
      data:"function_to_call=0", 
      success: function(data){
        alert('successful');
}

});

你的PHP函数脚本看起来像这样

     switch ($_GET['function_to_call']) 
     {

         case 0:
         {   
               function1();
               break;
         }

        case 1: 
        {
              function2();
              break;
        }
        default: break;

     }

//And your functions. 

    function function1() {
         echo "This is function 1";
    }
    function function2() {
         echo "This is function 2";
}

答案 1 :(得分:2)

Ajax允许您发出HTTP请求。 HTTP请求转到URL,而不是函数。

您可以编写一个PHP脚本来调用特定的函数(没有别的),将它放在给定的URL上,然后使用Ajax来请求该URL。

您可以使该PHP脚本包含if语句,该语句检查GET或POST数据,然后根据值调用不同的函数。

您无法从客户端指定任意函数。

答案 2 :(得分:0)

如果您这样做,您可以在同一页面上调用“功能”。 你所做的事实上是在同一页面上发帖子。有点黑客,但它确实有效。

$("#id").event(function(){
    $.post(
            "", 
            {postterm: postvalue, another:parameter}, 
        );
});

然后用帖子打电话:

if(isset($_POST['postterm'])){
    $othervalue = $_POST['another'];
    //Do your function
}