使用 web.py 和 extjs 进行 url 处理

发布于 2024-10-16 06:47:48 字数 984 浏览 5 评论 0原文

我正在将一个程序从涡轮齿轮移植到 web.py/mod_wsgi,并取得了相当大的成功。我已经设置了与涡轮齿轮类似的 URL 处理,但我对 extjs 2.0 处理 URL 的方式遇到了一些小烦恼。

假设我的应用程序名为“ack”,我可以通过访问 http://localhost/ackhttp://localhost/ack/ (注意尾部斜杠是唯一的区别)。从 web.py 的角度来看,这并不重要。但是,在我使用的用 extjs 编写的模板中,我指定了使用 JSON 从应用程序查询信息的 URL(下面的示例)。

var nameListStore = new Ext.data.JsonStore({
url: 'nameList',
root: 'nameList',
autoLoad: true,
fields: ['name'],
});

麻烦就在这里。如果我使用尾部斜杠访问我的应用程序,则 extjs 会形成一个 url 查询,例如 http://localhost/ack/nameList,它调用我的应用程序的函数并获取正确的数据。如果地址栏中没有尾部斜杠,extjs 会将 url 构建为 http://localhost/nameList,它永远不会进入我的应用程序,并且实际上每个 JSON 查询都会失败(如我的 firebug 控制台所示)。

我认为 extjs 只是删除最后一个斜杠后面的任何内容来构建 url,但我想解决这个问题。现在我只是告诉我的用户确保他们运行带有尾部斜杠的应用程序,但这似乎是一个很容易处理的事情。我只是不知道在 extjs 中如何。

I'm porting a program from turbogears to web.py/mod_wsgi with pretty good success. I've setup the URL handling similar to turbogears, but I'm running into a minor annoyance in how extjs 2.0 handles URLs.

Say my app is named "ack", I can test it by going to either http://localhost/ack or http://localhost/ack/ (note the trailing slash as the only difference). From a web.py point of view, this doesn't matter. However, in the template I'm using that was written in extjs, I designate urls to query information from the app using JSON (example below).

var nameListStore = new Ext.data.JsonStore({
url: 'nameList',
root: 'nameList',
autoLoad: true,
fields: ['name'],
});

Here's the trouble. If I access my app using the trailing slash, than extjs forms the a url query like http://localhost/ack/nameList, which calls my app's function and gets the correct data back. If I don't have the trailing slash in the address bar, extjs builds the url as http://localhost/nameList, which never makes it to my application and literally every JSON query fails (as shown in my firebug console).

I assume extjs is just ripping off anything trailing the last slash to build the url, but I'd like to fix that. Right now I'm just telling my users to make sure they run the app with the trailing slash, but this seems like a simple thing to handle. I just don't know how in extjs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文