我有php网站通过导航链接显示/隐藏页面
我想知道如何在点击相应的页面链接时调用我的php函数。
是否可以使用ajax(jquery?)来调用我的function.php文件中的所有函数之一?
据我所知,ajax会在php文件中运行整个代码吗?
$(document).on("click", ".dbLink", function() {
var sText = $(this).attr("data-variable");
$.ajax({
url: '../ini/functions.php?q='+sText,
type: 'get',
success: function(data){
alert(data);
}
});
});
function.php
function a(){
echo "result";
}
if (isset($_POST['action'])) {
switch($_POST['action']) {
case "a":
a();
break;
case "b":
b();
break;
default:
break;
}
}
答案 0 :(得分:3)
在AJAX参数中放入一个字符串,让PHP代码根据字符串运行不同的函数,例如
switch($_GET['op']) {
case "delete":
do_delete();
break;
case "update":
do_update();
break;
...
default:
// Report unrecognized operation
}
在你的jQuery代码中,处理函数应该调用event.preventDefault
或返回false
以阻止你点击的元素的正常动作(我猜测它是一个链接) 。此外,您需要将发送AJAX请求的方式与在PHP中检索参数的方式相匹配 - 如果使用$_POST
,则必须使用type: 'post'
- 并且参数名称必须匹配(您在Javascript中使用了q
,但在PHP中使用了action
。
$(document).on("click", ".dbLink", function(e) {
e.preventDefault();
var sText = $(this).attr("data-variable");
$.ajax({
url: '../ini/functions.php',
data: { action: sText }
type: 'post',
success: function(data){
alert(data);
}
});
});
答案 1 :(得分:1)
您可以使用请求参数中的数据向服务器发送ajax请求。
jQuery.ajax({
type: "POST",
url: 'your_functions_address.php',
dataType: 'json',
data: {functionname: 'add', arguments: [1, 2]},
success: function (obj, textstatus) {
if( !('error' in obj) ) {
yourVariable = obj.result;
}
else {
console.log(obj.error);
}
}
});
和your_functions_address.php是这样的:
<?php
$aResult = array();
if( !isset($_POST['functionname']) ) { $aResult['error'] = 'No function name!'; }
if( !isset($_POST['arguments']) ) { $aResult['error'] = 'No function arguments!'; }
if( !isset($aResult['error']) ) {
switch($_POST['functionname']) {
case 'add':
if( !is_array($_POST['arguments']) || (count($_POST['arguments']) < 2) ) {
$aResult['error'] = 'Error in arguments!';
}
else {
$aResult['result'] = add(floatval($_POST['arguments'][0]), floatval($_POST['arguments'][1]));
}
break;
default:
$aResult['error'] = 'Not found function '.$_POST['functionname'].'!';
break;
}
}
json_encode($aResult);
?>
答案 2 :(得分:0)
您不从AJAX调用函数。使用AJAX,您可以检索资源。
PHP是一个资源预处理器(就像每个服务器端语言一样),因此它执行代码为您带来所谓的资源(html页面,css,图像,......是资源)。
因此,AJAX不会发布函数,因为AJAX与PHP无关,而与HTTP请求无关。
从这个意义上说,AJAX方面可以理解它必须发布一个资源(并且它不知道该资源会触发一大堆服务器端逻辑)。
所以,你可以期待的是发送参数(例如通过GET或POST)并期待结果。在另一个(即PHP)方面,您应该考虑这些参数并处理它们。
也许发送像functionName = func1&amp; params = [1,2,%22a%22]这样的参数并将其处理为:
$func = $_GET['functionName'];
$params = json_decode($_GET['params']);
if (function_exists($func))
{
$result = call_user_func_array($func, $params);
echo json_encode($result);
}
else
{
echo "unexistent function";
}
可以完成这项工作,但是,再一次,AJAX不知道这一点,也永远不会,因为AJAX与PHP无关。