【发布时间】:2015-12-12 13:51:32
【问题描述】:
我有一些 php 代码,并且有一个声明 ajax 类型的条件。现在我想知道,我应该为每个请求分别编写所有的php代码吗?换句话说,我是否应该为这两种方法编写所有 php 代码两次(几乎重复)?
if(!empty($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) === "xmlhttprequest")
{
// I'm ajax
$arr = array('key1'=>'value1', 'key2'=>'value2');
echo json_encode($arr);
} else {
// I'm not ajax
$arr = array('key1'=>'value1', 'key2'=>'value2');
$_SESSION["arr"] = arr;
header('Location: '.$_SERVER['HTTP_REFERER']); // redirect to previous page
}
所以,如您所见,我必须将所有 PHP 代码编写两次。一次用于常规请求,一次用于 ajax 请求。实际上有很多代码,可能有 1000 行代码,我有两个为 ajax 请求再次编写它们(虽然它们几乎相同)。这是正常的方式吗?
我也想知道,有没有简洁的方法?实际上,我喜欢使用一种只需为两个请求编写一次 php 代码的方法......!
【问题讨论】:
-
不,您不必将所有代码编写两次。通常,您会从 UI 绑定功能中提取常用功能。然后,您将拥有两个不同的 UI 组件(一个用于 AJAX/API 请求,一个用于页面/UI 请求,因为将它们保持在同一页面上没有多大意义),它们将引用通用功能。
-
@David 感谢您的评论。我几乎明白你的意思。但实际上我仍然无法使用它..!有什么小例子吗?我想用它作为我的模式..
-
另一种思考方式 - 编写函数以将数据提取到数组中。然后编写几个函数来格式化该数据 - 一个用于
HTML输出,另一个用于AJAX。 -
@RyanVincent 看起来不错。请您在我的问题下写一个答案吗?
标签: php ajax performance