使用 jQuery AJAX 调用 PHP 函数

Posted

技术标签:

【中文标题】使用 jQuery AJAX 调用 PHP 函数【英文标题】:Call PHP Function using jQuery AJAX 【发布时间】:2011-05-08 08:03:26 【问题描述】:

我已阅读有关我的问题的所有主题,但无法解决我的问题。 我想使用 jQuery AJAX 获取 php 函数结果。

函数.php

function generateCode() 
//code here


function generateResult() 
//code here

如何使用 jQuery AJAX 捕获函数结果?我不想更改 function.php 结构,因为它与其他页面相关。

参考using jquery $.ajax to call a PHP function,没有答案可以解决我的问题。 谢谢你

【问题讨论】:

你能显示你的ajax代码吗,你是如何调用php文件的? 您是在问如何在 .php 文件中调用 PHP 函数吗?没有办法拥有一个 PHP 文件,然后 ajax 调用文件中的任何随机函数。它将涉及使用查询字符串(或发布数据)调用 php 文件,然后对其进行解析以调用正确的函数。 是的......我发现如果不传递变量是不可能的......谢谢:) 【参考方案1】:

您不能从 javascript 中调用 PHP 文件中的函数,句号。客户端(此处:Javascript)只能通过 HTTP 协议与服务器(此处:PHP)通信。 HTTP 协议没有文件、函数或编程语言的概念。这意味着您只能通过 URL 或 HTTP 标头传输信息。因此,您永远无法从 Javascript 调用 PHP 函数,您所能做的就是请求一个返回数据的 URL

因此,通过请求 URL,例如 http://example.com/myscript.php,脚本 myscript.php 被调用。这个脚本现在必须弄清楚它应该做什么并输出一些响应。这个脚本实际上可以调用PHP函数,例如:

// myscript.php

include 'functions.php'
echo generateCode();

因此,无论何时您请求 URL http://exmaple.com/myscript.php,您都会得到函数 generateCode() 的输出。您可能会注意到,这与使用 Web 浏览器访问 URL 时的工作方式相同。这是因为这是使用 HTTP 协议通过 Web 服务器运行代码的唯一机制,因此是 Javascript 可以“调用 PHP 函数”的唯一方式。 Javascript没有秘密后门可以直接调用PHP函数。

希望这会有所帮助。

【讨论】:

我认为有办法做到这一点。我读过 JSON RPC 但我不知道如何实现它。 plugins.jquery.com/project/jsonRPC2 @n00b 要使用它,您需要一个提供 RPC 服务的服务器,即某些服务,有时运行在 HTTP 之上,它接受请求并返回数据。相同的概念,略有不同的细节。您不能简单地通过网络访问任何机器并调用任意函数。感谢上帝,因为那将是一场安全噩梦。 hmmm... 好吧...我认为 Battal 的回答(在下面)是答案,我将尝试与 jQuery 一起实现它,希望没有冲突。谢谢你:) 这真的应该是答案! @Vis 当然,您可以在 AJAX 调用之上使用任意数量的模式。从技术上讲,您可以争辩说,使用不同的参数是 不同的 URL...在大型项目中,您宁愿使用路由器和非常不同的文件结构...它不会改变任何关于不过基本机制。【参考方案2】:

我所做的是在 JavaScript 中传递我想要调用的 PHP 函数名称。喜欢..

function MyFunction() 
jQuery.ajax(
    type: "GET",
    url: "function.php",
    data: "call=generateCode",
    success: function(response)
        //do something
    );

在数据字段中,“call”变量具有从“function.php”文件调用的函数名称。

在“function.php”中我放置下面的代码来调用函数

if($_SERVER['REQUEST_METHOD']=="GET") 
$function = $_GET['call'];
if(function_exists($function))         
    call_user_func($function);
 else 
    echo 'Function Not Exists!!';


【讨论】:

在这种幼稚的形式中,这是一个糟糕的想法。 call=getAllDatabaseRecords, call=logInUser... 我不想改变我的function.php的结构,因为它涉及到很多页面。谢谢你:) 如果您不能编辑该文件而不是制作新文件。将我的 php 代码放在新文件中,并将函数文件包含在新文件中。通过 ajax 调用这个新文件。【参考方案3】:

jQuery

$.ajax(
      url: "script.php",
      type: "POST",
      data: "id=1",
      success: function(msg)
         alert(msg);
      
   

PHP

<?php
    $id = $_POST['id'];
    echo "The id is ".id;
?>

你会从$.ajax success状态得到msg的php函数结果。

【讨论】:

我不想改变我的function.php的结构。谢谢你:) 我使用了相同的代码,并在 ajax 页面的警报中得到了不正常的输出

以上是关于使用 jQuery AJAX 调用 PHP 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AJAX/JQuery 调用多个 PHP 脚本?

使用 jquery / ajax 在 CodeIgniter 的控制器中调用函数

就jQuery ajax调用而言,php echo和return之间的区别[关闭]

使用 jQuery 和 AJAX 的跨域 PHP 调用

创建对 PHP 函数的 jQuery AJAX 请求

使用 JavaScript 调用 jQuery 函数