使用 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 函数的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery / ajax 在 CodeIgniter 的控制器中调用函数