【发布时间】:2015-02-25 05:30:15
【问题描述】:
我正在尝试根据“部门”填充“职位”下拉列表。 Ajax 调用在“部门”下拉列表的change 事件上触发。
问题是Ajax调用无法到达正确的路由:
-
url: 'ajax/get-position'- 网址是:localhost/public/join/ajax/get-position?dept_id=5 -
url: '/ajax/get-position'- 网址是:localhost/ajax/get-position?dept_id=5
这两个网址都是错误的,我不知道为什么。尤其是第一点中的 /join/ 对我来说是个谜。正确的 URL 应该是 localhost/public/ajax/get-position?dept_id=5。我相信路由中存在某种冲突,但我不确定在哪里。
Ajax 调用是在 localhost/public/join/editor 页面上进行的。
JS:
...
...
$.ajax({
url: 'ajax/get-position',
data: {
dept_id: value
},
type: 'GET',
dataType : 'json',
success: function(json) {
//
},
error: function(xhr, status, errorThrown) {
//
}
});
...
...
路线:
Route::get('join/editor',
array(
'uses' => 'DefaultController@showEditorRegistration',
'as' => 'editorRegistration'
)
);
Route::post('join/editor',
array(
'uses' => 'DefaultController@createEditor',
'as' => 'createEditor'
)
);
// ROUTE FOR AJAX CALL
Route::get('ajax/get-position',
array(
'uses' => 'DefaultController@getPositionsByDepartment',
)
);
有什么想法吗?
编辑:
JavaScript 位于外部文件中。如果我将 JS 直接放在 Blade.php 视图中并使用 URL::route('routename') 作为 Ajax url 值 - 一切正常。但是,仅使用 url: ajax/get-position - 不会。疯狂的世界。
【问题讨论】:
-
如果您尝试直接在浏览器中点击
get-position路由会收到什么错误消息? -
@ChrisSchmitz 没有。直接在浏览器中访问时,该路线很好。只有 Ajax 调用会产生问题。我在帖子中提到的错误 URL 会抛出 404。
-
我设置了一个快速项目来测试 ajax 调用并且没有遇到问题。要进行故障排除,请尝试将
ajax/get-position路由中的第二个参数替换为闭包并返回测试数据。例如:Route::get('ajax/get-position', function(){return 'worked';});。如果你添加它并通过 ajax 触发它,你会得到“工作”返回吗? -
@ChrisSchmitz 不幸的是,它没有被退回。它无法返回,因为 Ajax 仍然没有找到正确的路线。我将 JS 脚本放入一个 Blade.php 文件中,并使用
URL::route('getPositionsByDepartment')作为 Ajaxurl值 - 它可以工作。但是我想将 JS 保存在一个外部文件中并简单地使用 'ajax/get-position',它应该基于路由工作 - 它不:/ -
这很奇怪。因此,当您将
URL::route('getPositionsByDepartment')添加到视图中并在浏览器的开发工具中检查生成的 ajax 时,它插入的完整 url 是什么?
标签: ajax laravel laravel-4 routing