我在多个JavaScript函数中有一些ajax调用。每个文件都对functions.php文件执行post / get操作
functions.php有多个功能,它们应该与JavaScript中的功能相对应
例如,在js中,我有:
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中,我有这样的东西:
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函数可以返回true、false、1或0,假设返回的是已报警的数据alert(data);
如果对我想要的东西有更多的困惑,请让我知道,我会澄清,
谢谢
发布于 2012-01-25 03:08:18
您是否检出了REST库样式。看起来你基本上是这样做的,但更令人困惑的是。当我说REST库时,我并不是指纯粹的RESTful库,而是指后端的每个函数都可以通过url导航。
这样做很好(只要函数数据不依赖于任何其他函数数据(因为这可能会导致一些有趣的结果))。做更多的restful方法要容易得多。设置rest库相当简单。
我发现做整个$_POST..。然后继续这样做,随着时间的推移,它只会变得很麻烦,并且变得越来越难以管理,因为在所需的东西上总是会有一些新的曲折,然后你就会得到100个方法来处理后端函数的调用。
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,那么您可能会得到如下内容:
function callBackend(tokens) {
$.ajax({
type: 'POST',
url: MyLibrary.apiURL(tokens),
dataType:'json',
success: function (data) {
alert(data);
}
});
}在您的后端,您将需要一个如下所示的.htaccess文件
RewriteRule 0\.5/(.*) api/_MyApi.php?v=0\.5&state=$1 [QSA]然后,您可以编写一个后端switch语句,该语句将分离状态(分隔符将是"/"),从而导航到结束时间库调用。
<?php
$state = MyParser::Parse($_REQUEST["state"]);
$output = array();
switch ($state) {
case "case1":
//do stuff
break;
}
echo json_encode($output);
?>这样,输出总是以相同的方式处理。
就像一张纸条。这是一个非常简单和不完整的实现,但我发现它比$_POST更容易维护,因为100个不同的文件中有1个都有非常相似的输出。
干杯!快乐编码
发布于 2012-01-25 02:59:48
为什么不把PHP函数分成单独的小脚本呢?它们代表应用程序中的不同端点,不能一起调用,因此它们不应该在一起。
https://stackoverflow.com/questions/8992403
复制相似问题