首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过ajax调用多个php函数,最佳实践?

如何通过ajax调用多个php函数,最佳实践?
EN

Stack Overflow用户
提问于 2012-01-25 02:55:15
回答 2查看 2.8K关注 0票数 1

我在多个JavaScript函数中有一些ajax调用。每个文件都对functions.php文件执行post / get操作

functions.php有多个功能,它们应该与JavaScript中的功能相对应

例如,在js中,我有:

代码语言:javascript
运行
复制
function one() {
$.ajax({ 
    type: 'POST', 
    url: 'http://www.example.com/functions.php', 
    data: vals,
    dataType:'json',
    success: function (data) {
        alert(data);
    }
});
}

function two() {
$.ajax({ 
    type: 'POST', 
    url: 'http://www.example.com/functions.php', 
    data: othervals,
    dataType:'json',
    success: function (data) {
        alert(data);
    }
});
}

function three() {
$.ajax({ 
    type: 'GET', 
    url: 'http://www.example.com/functions.php',  
    data: { get_param: 'user' },
    dataType:'json',
    success: function (data) { 
        alert(data);
    }

});
}

在php中,我有这样的东西:

代码语言:javascript
运行
复制
if (isset($_POST['city'])) {  // this comes from the javascript vals json object
$city = $_POST['city'];
   function one() {
    // do something

    return true;
   }
}

function two() {
 // do something
 return true;
}


if (isset($_GET['get_param']) && $_GET['get_param'] == 'user'){
function three() {
 // do something
return true;
}
}

也许php端在我编写它的时候有点混乱,但最后我希望function one只处理来自php文件的响应函数。显然,它们不需要具有相同的名称。

php函数可以返回truefalse10,假设返回的是已报警的数据alert(data);

如果对我想要的东西有更多的困惑,请让我知道,我会澄清,

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2012-01-25 03:08:18

您是否检出了REST库样式。看起来你基本上是这样做的,但更令人困惑的是。当我说REST库时,我并不是指纯粹的RESTful库,而是指后端的每个函数都可以通过url导航。

这样做很好(只要函数数据不依赖于任何其他函数数据(因为这可能会导致一些有趣的结果))。做更多的restful方法要容易得多。设置rest库相当简单。

我发现做整个$_POST..。然后继续这样做,随着时间的推移,它只会变得很麻烦,并且变得越来越难以管理,因为在所需的东西上总是会有一些新的曲折,然后你就会得到100个方法来处理后端函数的调用。

代码语言:javascript
运行
复制
MyApi = {    
    /**
     * The API Version
     */
    API_VERSION: "0.5",
    SITE_URL: "http//myurl.com/",
    /**
     * The API URL
     */
    apiURL: function(tokens) {
        return MyApi.SITE_URL + MyApi.API_VERSION + "/api/" + MyApi.apiTokenizer(tokens);
    },
    /**
     * The tokenizer for the API.
     */
    apiTokenizer: function(tokens) {
        var str = '';
        $.each(tokens, function(key, value) {
            str += value + "/";
        })
        return str;
    }
}

这是用于生成新的api链接的javascript,那么您可能会得到如下内容:

代码语言:javascript
运行
复制
function callBackend(tokens) {
    $.ajax({ 
        type: 'POST', 
        url: MyLibrary.apiURL(tokens),
        dataType:'json',
        success: function (data) {
            alert(data);
        }
    });
}

在您的后端,您将需要一个如下所示的.htaccess文件

代码语言:javascript
运行
复制
RewriteRule 0\.5/(.*) api/_MyApi.php?v=0\.5&state=$1 [QSA]

然后,您可以编写一个后端switch语句,该语句将分离状态(分隔符将是"/"),从而导航到结束时间库调用。

代码语言:javascript
运行
复制
<?php
    $state = MyParser::Parse($_REQUEST["state"]);
    $output = array();
    switch ($state) {
        case "case1":
            //do stuff
            break;
    }

    echo json_encode($output);
?>

这样,输出总是以相同的方式处理。

就像一张纸条。这是一个非常简单和不完整的实现,但我发现它比$_POST更容易维护,因为100个不同的文件中有1个都有非常相似的输出。

干杯!快乐编码

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8992403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档