0

我正在开发一个名为shelfari的带有backbone.js +codeigniter的网络应用程序,目录结构如下

目录结构 http://img46.imageshack.us/img46/2506/c180.png

我已在 htdocs 中放置“shelfari”文件夹并以

http://localhost/shelfari/

当调用 model.save 方法时,我想发送一个 post 请求到

POST http://localhost/shelfari/codeigniter/index.php/bookapp

所以我这样定义我的模型

var BookItem = Backbone.Model.extend({
urlRoot:'codeigniter/index.php/bookapp/',  

但它发送一个帖子请求

POST http://localhost/codeigniter/index.php/bookapp/  404 not found 

所以我重新定义了网址

var BookItem = Backbone.Model.extend({
urlRoot:'shelfari/codeigniter/index.php/bookapp/',

然后它也发送一个发布请求

POST http://localhost/shelfari/shelfari/codeigniter/index.php/bookapp/  bad error

我应该怎么做才能发送请求

POST http://localhost/shelfari/codeigniter/index.php/bookapp

请帮我找到解决方案

4

2 回答 2

0

尝试在 URL 前添加一个“/”:“/shelfari/codeigniter/index.php/bookapp/”

两个额外的建议:

1) 您是否考虑在根目录中使用 .htaccess 文件将 index.php 插入到您的请求 URL 中?我相信这是 Codeigniter 的最佳实践,它允许您使用更简洁的 URL,而无需 URL 的“index.php”部分。请参阅下面的示例。

2)您是否使用“bookapp”控制器的索引功能?如果没有,您的 URL 中可能缺少一个片段。您的 URL 应遵循以下模式: http://www.domainname.com/index.php/controllername/functionname,其中controllername是包含您正在调用functionname的函数的控制器的名称,并且是控制器中函数的名称。如果您格式化一个 .htaccess 文件并将其放在您的根目录中,您可以从 URL 中删除 index.php 以便更清晰http://www.domainname.com/controllername/functionname

于 2013-07-13T21:18:42.953 回答
0
urlRoot="codegigniter/"

您使用的是前缀斜杠,它假定您指向 localhost 文档根目录。当您不使用该斜杠时,路径将放在您当前的 url 之后。

Host: localhost/shelfari
urlRoot = "/codigniter"

制作最终网址localhost/codeigniter,因为您使用该斜杠

Host: localhost/shelfari
urlRoot = "codigniter" (note the missing slash)

制作最终的 url localhost/shelfari/codeigniter,因为 urlRoot 将被附加到shelfari。

最佳实践是使用绝对路径,所以使用斜线。因此,您的 urlRoot 的最佳选择是/shelfari/codeigniter/......

我建议您使用 windows 主机文件,以便获得一个干净的 url,并且这些问题不再存在。

请修正您的帖子格式,很难阅读

于 2013-07-13T15:15:21.540 回答