2010-11-11 132 views
3

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

function.php

function generateCode() { 
//code here 
} 

function generateResult() { 
//code here 
} 

我如何赶上使用jQuery AJAX功能结果呢?我不想改变function.php结构,因为它涉及到另一个页面。

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

+0

你可以显示你的ajax代码,你如何调用php文件? – Naresh 2010-11-11 08:21:30

+0

您是否问如何在.php文件中调用PHP函数?没有办法让PHP文件,然后Ajax调用文件中的任何随机函数。它将涉及用查询字符串(或发布数据)调用php文件,然后解析该文件以调用正确的函数。 – Prescott 2010-11-11 08:25:02

+0

yeaah ...我发现这是不可能的,没有传递变量..谢谢:) – n00bi3 2010-11-13 13:51:32

回答

0

要将近直接使用PHP类和函数,你可以使用xajax功能。

33

您不能从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函数。

希望这会有所帮助。

+0

我认为有办法做到这一点。我读过JSON RPC,但我不知道如何实现它。 http://plugins.jquery.com/project/jsonRPC2 – n00bi3 2010-11-11 08:34:53

+1

@ n00b为了使用它,您需要一个提供RPC服务的服务器,即某些服务(有时运行在HTTP之上)接受请求并返回数据。相同的概念,细节略有不同。你不能简单地通过网络进入任何机器并调用任意函数。感谢上帝,因为那会是安全的噩梦。 – deceze 2010-11-11 08:38:50

+0

嗯...好吧然后...我认为Battal(在下面)回答是答案,我会尽量与jQuery一起实施,希望没有冲突。谢谢:) – n00bi3 2010-11-11 09:22:11

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; 
?> 

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

+0

我不想改变我的function.php的结构。谢谢:) – n00bi3 2010-11-11 09:16:11

+0

我已经使用相同的代码,并在ajax页面上提醒异常输出 – rahularyansharma 2012-08-14 12:40:36

8

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

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

在这里,在数据字段“呼”的变量有函数名从“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!!'; 
} 
} 
+2

在这种天真的形式这是一个可怕的想法。 'call = getAllDatabaseRecords','call = logInUser' ... – deceze 2010-11-11 08:46:47

+0

我不想改变我的function.php的结构,因为它涉及到很多页面。谢谢:) – n00bi3 2010-11-11 09:19:51

+1

如果您不能编辑该文件而不是创建新文件。将我的php代码放在新文件中,并将函数文件包含在新文件中。由ajax调用这个新文件。 – Naresh 2010-11-12 05:17:40