在CodeIgniter中正确使用$ .post,$ .ajax或AJAX来调用PHP脚本

Pro*_*igy -6 javascript php ajax jquery codeigniter

我不是一个框架粉丝,但我已经习惯使用它,因为我正在开发一个其他人可能稍后编辑的项目.

我正在使用CodeIgniter框架(我有点新的).

jquery $.post(url, function() {})用来异步调用一个名为php-parserI 的文件夹下的根目录中的登录解析器,我意识到这个文件夹没有使用任何CodeIgniter's现成的类.我决定将文件夹移动php-parserapplication/libraries但是当我尝试使用jQuery它来引用完整路径时/application/libraries/php-parser/the-script.php,它会返回一个403 forbidden error

你觉得我能做什么?有些人说我可以让脚本成为一个控制器,但这里是正在发生的事情,它是一个弹出模式登录页面.如果单击登录/注册按钮,则从任何页面弹出模式,如何为此创建控制器和模型(如果我要遵循该过程).

补充:我将模态内容放在所有页面上包含的页脚的末尾,如何为这种模式创建控制器?任何帮助!

Que*_*tin 6

在处理MVC时(至少你使用它的方式),你有三个部分:

  • 模型 - 在这种情况下,这是与数据库交互的代码.
  • 视图 - 将要发送回浏览器的数据格式化的代码
  • 控制器 - 将两者连接在一起的代码,可能包含一些业务逻辑.

您还有一些路由代码将URL映射到该URL的右侧控制器.


浏览器(和其他客户端)仅通过URL与Web服务器交互.

所以你绝对需要设置一个Controller来处理来自浏览器的请求.


如果您以快速而肮脏的方式执行此操作,那么您的控制器将只从POST请求中获取用户名和密码,使用模型对数据库进行检查,然后喷出"成功!" 或"失败!" 进入视图(可能最好写成将JSON格式返回给浏览器的东西).


如果你对此非常强大,那么视图将具有以下逻辑:

浏览器是否在接受标头中明确包含JSON?

如果是这样,请发回一些JSON,说"成功"或"失败"(或真/假,或任何对你有意义的东西).

不是吗?然后返回"对不起,你没有登录!" HTML文档或重定向回到它们来自的页面(因此它将在登录状态下重新加载).

这样,如果JavaScript 因任何原因失败,那么使用Ajax JavaScript逐步增强的纯HTML表单仍将起作用.(注意:你必须这样写!).

如果你dataType: "json"在Ajax选项中说,jQuery将自动包含一个JSON友好的Accept头.