如何通过Ajax API处理多个请求?

时间:2015-02-27 06:29:41

标签: javascript jquery ajax

我有一个大型项目需要通过Ajax调用处理多个函数,到目前为止我使用不同的文件来处理每个函数调用。我知道必须有更好的方法来通过API处理请求

在结构方面设计这样一个API的标准做法是什么?

谢谢!

2 个答案:

答案 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(){

}