Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对同一页面上包含的php函数进行ajax调用_Php_Ajax - Fatal编程技术网

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

对同一页面上包含的php函数进行ajax调用,php,ajax,Php,Ajax,我的问题可能听起来很老,已经回答了你,但我没有找到一个令人满意的答案。让我解释清楚我的情况 我得到了index.php,如下所示 index.php <?php inlcude("connect.php"); include("functions.php"); ?> <html> $(document).ready(function() { $('#button').click(function()

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

我得到了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>

$(文档).ready(函数(){
$(“#按钮”)。单击(函数(){
$.ajax({
键入:“GET”,
数据:“方法=测试”,
成功:函数(数据){
警报(数据);
}
});    
});    
});
我没有在ajax调用中传递URL,我成功地获得了数据警报,但是整个页面从
。当我提供functions.php的url时,我会在警报框中获得预期的输出

我希望你们对我的问题有一个准确的猜测。我的问题是我需要从
functions.php
调用一个函数,它已经包含在我的
index.php
页面中。我不想在ajax的URL中再次使用
functions.php
,因为
functions.php
会被调用两次。这是为了避免服务器负载

让我这个家伙想出一些有趣的主意


谢谢。

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

您可以编写一个PHP脚本,该脚本将调用特定函数(而不是其他函数),将其放置在给定的URL上,然后使用Ajax请求该URL

您可以让PHP脚本由一个
if
语句组成,该语句检查GET或POST数据,然后根据值调用不同的函数


不能从客户端指定任意函数

扩展昆汀所说的内容,您不能直接从Ajax请求调用php函数,但可以将GET&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";
}

如果你这样做,你可以在同一页上调用“函数”。 实际上,你所做的是在同一页上调用一个帖子。有点像黑客,但它是有效的

$("#id").event(function(){
    $.post(
            "", 
            {postterm: postvalue, another:parameter}, 
        );
});
然后用帖子来称呼它:

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

假设functions.php已经加载到index.php中,是否有可能我不使用URL而是使用index.php中预加载的函数?如果我不理解您的问题,请道歉,但Ajax调用的目的是从服务器加载动态数据。。。如果已经加载了数据,那么为什么要对该数据进行Ajax调用?您可以从index.php调用“functions.php”中的任何函数,而无需Ajax调用……但是,是否可以在不重新加载页面的情况下从预加载的functions.php中获取数据并动态显示?我怀疑服务器负载问题会是个问题,除非functions.php非常大。在任何情况下,您仍然需要发出HTTP请求来处理ajax,nyet?如果您真的希望保持服务器负载较低,您可能希望在JS中实现您的功能,除非它需要DB访问。