我问自己是否可以通过Ajax-Request在一个PHP文件中加载相关的PHP函数。当然应该可以,但是如何?
Normaly,在我的webapplication中,每个Ajax函数(在客户端上)通过其URL调用特定的PHP文件。例如,这个Ajax调用包括/ ajax.php。
function ajaxRequest( ) {
$( ".loading-overlay" ).show();
$('#loading').show();
$.ajax({
url : "includes/ajax.php",
type : "POST",
data : $("#nodes").serialize(),
dataType: "json",
cache : false,
success: function( data ) {
drawChart( data.chart_data );
currentGauge( data.current_data.current );
tableMaxMin( data.maxmin_data );
tableAvgDays( data.avg_data );
$('#loading').hide();
$( ".loading-overlay" ).hide();
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nERROR: "+ err);
}
});
}
我的大多数应用程序都有多个Ajax请求。我认为为每个ajax函数创建一个新的PHP文件并不是非常有效,尤其令人困惑。一个更好的解决方案是将每个不同的(服务器端)响应引擎存储在一个具有不同功能的PHP文件中。
只是为了理解,我正在寻找这样的东西:
function ajaxRequest( ) {
$( ".loading-overlay" ).show();
$('#loading').show();
$.ajax({
url : "includes/ajax.php",
function: parseData(), //<--- This is not allowed
type : "POST",
data : $("#nodes").serialize(),
dataType: "json",
cache : false,
success: function( data ) {
drawChart( data.chart_data );
currentGauge( data.current_data.current );
tableMaxMin( data.maxmin_data );
tableAvgDays( data.avg_data );
$('#loading').hide();
$( ".loading-overlay" ).hide();
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nERROR: "+ err);
}
});
}
那么,如何按函数加载特定的响应引擎而不是url?
答案 0 :(得分:0)
来自一个文件的ajax调用
$.ajax({
url: "includes/ajax.php?action=login",
method: "POST",
success: function(response){
console.log(response);
}
})
从另一个文件调用ajax
$.ajax({
url: "includes/ajax.php?action=userdetail",
method: "POST",
data : {'userId': 1},
success: function(response){
console.log(response);
}
});
// ajax.php
<?php
$action = $_GET['action'];
extract($_POST);
switch($action){
case 'login' :
//code for login
break;
case 'userdetail' :
//code for userdetail you can use directly $userId to access post variable as we have use `extract` method.
break;
default :
echo json_encode(array("message"=>"Please provide proper action"));
break;
}
?>