我的问题实际上不是 ajax 加载本身,更多的是在没有 javascript 的情况下加载它的能力。我的意思是,当我仅基于 ajax 可用性或 不使用 ajax对整个项目进行编码时,我可以轻松应对。
//编辑:虽然阿伦德已经有了或多或少有效的答案,但同时“这个问题没有直接的答案”。但是,我希望看到开发人员针对像我这样的场景的其他一些方法!即使只是几个链接也可以提供帮助!
基本上我只是感到沮丧,在同一页面上对所有内容进行两次编码,以确保没有和启用 Javascript 的用户都有相同的体验。这很烦人,我一直想知道其他人如何解决这个问题。
例如,当我更新依赖于相同变量的两个 div 时,它会变得混乱。这是一个例子:
非 js 版本
require 'classobject.class.php';
$another_var = 'something';
$class = new classobject($_POST['variable']); // just an example to show that this is dynamic - I'm aware of injection!
$function = $class->returnsth(); // returns 1
if(isset($_POST)) {
echo '<div id="one">Module 1 says:'; $require 'module_one.php'; echo '</div>';
echo '<br /><br />';
echo '<div id="two">Module 2 says:'; $require 'module_two.php'; echo '</div>';
}
现在我有了根据 $functionmodule_two.php
的module_two.php
返回变量执行不同的代码。像:
if($function >= 1 && another_var != 'something') {
// do stuff
}
else {
// do other stuff
}
现在,由于重新加载很容易,当我想在 keyUp/enter/submit 或其他什么上加载两个模块时,我基本上有一些问题:
- 我必须
$_POST
手动将变量发送到模块才能使用它们 - 我必须重新执行类和它的方法,并在每个模块文件中为它们建立一个链接(require_once)。
- 由于模块中不存在 $another_var ,因此我也必须将此变量发送到每个模块(例如使用 post ),然后在使用它之前,我必须像“更改”它一样
$another_var = $_POST['another_var'];
我觉得这有点烦人,我想知道你们是怎么做到的。我希望我的编码方式不会太傻,但我想不出另一种方式。可能很难与我的非常基本的示例相关联,但是将整个项目与代码一起带来太多了。总而言之,我正在寻找一种更好的方法来编码和清理这个烂摊子——一定有办法!我考虑过会话,但为了兼容性,我也不想依赖它们(如果有人不允许使用 cookie)。
如果您无法通过这种组装代码的方式与我试图完成的工作相关联,我将解释一个我经常面临的场景(如果您已经了解我的痛苦,这并不重要):
- 基本上,我有我的
index.php
页面,所有内容都在其中执行,包括 html 正文和 css 样式等。此页面需要一些变量,这些变量是从需要索引的页面中设置的(如$another_var
我的示例中)。 - 现在也可以设置其他变量(例如从表单中)。根据不同的类和方法加载新变量(数组),这些变量在我的模块中的 while 循环中使用,以回显所有内容。
希望不要太抽象。考虑一个预订系统,其中一些变量是从您来自的页面(您想要预订的活动)设置的,然后用户设置更多的东西(时间跨度,一些偏好,......)。最后,它应该显示从数据库一直到最终结果的结果——你可以说用户一步一步地缩小结果。