你只需解决一个有趣的问题,你就必须把它做对。
要回答您的问题:
1) $_SESSION 用于在您的应用程序中构建持久行为,这意味着您可以跨请求传递数据。所有可以序列化的东西,都被序列化为字符串并写入文件。当请求时,数据会从该文件中反序列化并重建到 $_SESSION 数组中。更多关于这里的会议。
2) 不,只要您返回一个具有正确 Content-Type 等的有效字符串(来自您的 PHP 脚本)。“ajax 数据”只是从您的 PHP 脚本中回显的字符串。正确设置标题例如:header('Content-Type: text/javascript');
在回显之前。
关于内容类型的说明:这取决于你想在另一边实现什么。如果您使用 jQuery 并使用它构建客户端逻辑,那么您可能想要发送 JSON。在这种情况下,我建议将您的内容类型设置为“text/javascript”,而不是“正确”类型,即“application/json”。我曾经在使用 Internet Exploder 和 Firefox 时遇到很多问题,浏览器会与 application/json 混淆。由于 JSON 是 javascript(表示法),因此它始终可以使用“text/javascript”按预期工作。
有一个很好的 ini 指令“ include_path
”,您可以根据自己的特定需求进行调整。有用的函数是set_include_path()和get_include_path()。只有这两个你才能创造奇迹。
PHP 中的文件按“include_path”指令中的顺序包含。为了使其在包含/需要文件时更加灵活,请考虑 3 种最常用的做法:
- 用你的文件结构设置你的 include_path
- 构建一些花哨的自动加载器(参见spl_autoload功能)
- 仅 5.3+,使用命名空间
这些天include_path
不那么受欢迎,因为每个人都倾向于用“适当的方式”和其他蹩脚的借口来吹嘘事情。如果您不构建另一个 Facebook、Twitter 或 Youtube-wannabe 应用程序,请考虑 include_path。它很简单,并且可以非常强大(而不是使用臃肿的技术)。
计划你的结构,并像这样添加你的目录:
<?php
// somewhere at the very top of your entry script
set_include_path(implode(PATH_SEPARATOR, array_merge(array(
'/path/to/app/dir1',
'/path/to/app/dir2',
'/even/path/outside/your/app',
// ...
), explode(PATH_SEPARATOR, DEFAULT_INCLUDE_PATH))));
?>
这会将您的 php.ini 文件 (DEFAULT_INCLUDE_PATH) 中设置的当前路径与您的结合起来。
现在,当您包含/需要一些脚本时,它将尝试按此列表的顺序包含它。
抱歉,解释太长了。希望它有所帮助;)