【发布时间】:2013-07-09 09:58:37
【问题描述】:
我是 Laravel 4 的新手,看看我是否可以将我的网站转换为它(之前没有框架编写)。我无法让 AJAX(通过 jQuery)与我的控制器正确交互。
首先,我正在使用的控制器名为IndexController.php,并有一个名为types 的函数,如下所示:
class IndexController extends BaseController {
// Other controller functions
public function types($brand) {
$types = DB::select('select * from aircraft_types where brand_id = ?', array($brand));
echo json_encode($types);
}
}
函数返回数据库中的数据(JSON 格式)。然后我创建了一个到这个控制器的路由,功能如下:
Route::get('types/{id}', array('uses'=>'IndexController@types'));
我通过转到 //localhost/lavarel/public/types/1 再次检查了路由和函数是否正常工作,并且确实返回了正确的 JSON 数据。
有问题的jquery函数如下:
function updateTypes($brand) {
$("#type").append('<option value="test">Test...</option>'); // This executes correctly
$.getJSON('/types/'+$brand, function(data) {
$("#type").append('<option value="test 2">Test 2...</option>'); // This does not
// Some other JSON related code
});
为了测试该功能的工作原理,我插入了两行来编辑我正在使用的项目。该函数被正确调用,因为正在附加第一个“测试”选项。但是,由于没有执行第二行测试代码,它似乎从未激活回调函数。
我怀疑问题是我提供给 JavaScript '/types/'+$brand 的 URL。我在一些教程中看到了在我提供的 URL 之前使用的 BASE var,但我不明白为什么上面的代码不起作用。有什么指点吗?
谁能向我解释我哪里出错了?
【问题讨论】:
-
你在控制台的 responseText 中看到了什么?
-
原谅我 - 我如何访问它?该网站没有中断或显示错误,它只是没有进行所需的更改
-
如果您使用的是 Chrome,请转到右上角菜单中的
Tools > Developer tools。转到Network选项卡并选择底部的XHR。在这里,您将看到您的应用程序的任何请求。对调试很有帮助。