Php 具有可选参数和ajax调用的Laravel路由

Php 具有可选参数和ajax调用的Laravel路由,php,jquery,ajax,laravel,routes,Php,Jquery,Ajax,Laravel,Routes,我正在处理一个用户注册页面,但遇到了以下问题。我对新注册(id将为null)和修改(id将被传递)使用相同的视图 此外,我在视图上有一个ajax调用来填充城市 这是我的路线 Route::get('UserRegistration/{uid?}', 'UserRegistrationController@Page_Load'); Route::get('UserRegistration/getCityByID', 'UserRegistrationController@getCityByID')

我正在处理一个用户注册页面,但遇到了以下问题。我对新注册(id将为null)和修改(id将被传递)使用相同的视图

此外,我在视图上有一个ajax调用来填充城市

这是我的路线

Route::get('UserRegistration/{uid?}', 'UserRegistrationController@Page_Load');
Route::get('UserRegistration/getCityByID', 'UserRegistrationController@getCityByID');

public function Page_Load($uid = null) {
//code
}
这是我的ajax url:

URL::route('UserRegistration/getStateByID')
在进行ajax调用()时,它将调用第一条路由,而不是第二条路由。但是,如果我删除第一个路由中的可选参数({uid?}),一切都会正常工作


任何输入都将不胜感激。

通配符应始终排在最后:

Route::get('UserRegistration/getCityByID','UserRegistrationController@getCityByID');
路由::get('UserRegistration/{uid?}','UserRegistrationController@Page_Load');
echo URL::to('UserRegistration/getStateByID');

Routes+RESTful关键字必须是唯一的,我认为。例如,如果--我知道您会尽一切努力避免--
uid=getCityByID
,会发生什么?在定义路线时,不应存在这种模糊性。在像您这样的情况下,可能会改变路线的顺序,因为第二条路线比第一条路线更具体。谢谢@PeterKA。虽然我有逻辑将它们过滤掉,但在路线中我没有注意到它。非常感谢。我刚刚忽略了野生动物的本质。这就解决了问题。