【发布时间】:2012-12-02 11:04:27
【问题描述】:
我有以下方法执行 Ajax 请求,传递从选择输入获得的一些动态值。
它工作正常,但动态值作为 URL 中的参数传递,类似于 states/listCities/?big_string_of_serialized_parameter。
$this->Js->event(
'change',
$this->Js->request(
array( #url
'controller' => 'states',
'action' => 'listCities'),
array( # ajax options that generates the serialized parameter
'update' => '#DealerCityId',
'data' => '$("#DealerStateId").serialize()',
'dataExpression' => true
)
)
);
我正在尝试以更友好的 URL 方式执行此操作,例如 states/listCities/2。
在 CakePHP 中可以使用来自输入的动态值生成像这样的友好 URL,还是只能将动态值作为参数传递?
【问题讨论】:
-
我不知道 cakePHP,但基本上你在寻找服务器重写 url 规则而不是 php 脚本
-
@roasted,我知道如何“通过我的双手”做到这一点,但在这个问题上,我对 CakePHP 的做法很感兴趣。
-
你为什么要美化只通过ajax访问的url?没有用。用户不会看到网址,为什么要在代码中添加额外的内容?
-
@ADmad 首先,仅出于好奇,是否可以这样做。其次,我认为处理友好 URL 中的参数会产生更简洁的代码,作为参数(至少在 CakePHP 中)。第三,也许有一天会有一个项目可以通过 Ajax 或“正常方式”访问某些 URL。它现在工作正常,但我只是在尝试改进。
-
将参数作为查询字符串(即 GET)传递并没有什么不妥之处。如果你想要花哨的 url,请阅读 CakePHP 手册上的路由。 Cake 还具有“命名参数”功能,但它就像是查询字符串的专有版本。另外我建议你放弃 JsHelper 并自己编写 jquery 代码。