我有一个大型项目需要通过Ajax调用处理多个函数,到目前为止我使用不同的文件来处理每个函数调用。我知道必须有更好的方法来通过API处理请求
在结构方面设计这样一个API的标准做法是什么?
谢谢!
答案 0 :(得分:5)
它可以是从简单的东西到更复杂的东西,你如何写它取决于你,假设你是唯一一个将使用API的人,以及我知道这种事情没有一成不变的标准,但解决这类问题的一个好方法是创建一个便利功能,无论是客户端还是服务器端,比如
function fetch(what, data) {
data.what = what;
return $.ajax({
url : '/my/ajaxapi.php',
data : data,
dataType : 'json'
});
}
当你需要做某事时
fetch('users', {name : 'Bill'}).done(function(result) {
$('#user').text(result.text);
});
$('.zoidberg').on('click', function() {
var self = this;
fetch('zoidberg', {}).done(function(result) {
$(self).text(result.text);
});
});
在服务器端,你有一个文件,你如何设置它取决于使用的语言,但说PHP,你当然可以使用类等等或只是做一个简单的if / else或switch / case
<?php
$key = $_GET['what']; // wrap in something that makes it safe
$res = Array();
switch($key) {
case 'users' :
// lookup in DB or something
$res['text'] = $username;
break;
case 'zoidberg' :
$res['text'] = " Why Must I Be a Crustacean in Love";
}
echo json_encode($res);
?>
这只是一个简单的例子,但是设置它以适合您正在做的事情,它可以为您节省大量的工作,并且您可以将所有内容放在一个地方,以便它可以在一个地方使用。以后很容易找到和修改,很容易添加可以用ajax等获得的新东西,并且可能只需要获取资源,数据库连接等一次,而不是每个文件。
答案 1 :(得分:1)
以下是我认为你可以做的事情 -
不是创建多个文件来处理AJAX请求,而是创建一个文件,然后为不同类型的操作创建不同的函数。
在AJAX请求中指定要调用的函数,然后仅运行该函数。
通过这种方式,您不必为不同类型的操作管理多个文件。
e.g。
jQuery的:
$.ajax({
type : "POST",
url : 'myfile.php',
data : {'action': 'func1_name', 'val': 'some_value'} //wants to call a specific function
},
success:function(response){
console.log(response);
}
);
PHP:
//executing func1
if(isset($_POST['action']) && $_POST['action'] == 'func1_name'){
func1();
}
function func1(){
if(isset($_POST['val']))
echo $_POST['val'];
die();
}
function func2(){
}