Я новичок в 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
});
Чтобы проверить, где работает функция, я вставил две строки, которые редактируют элемент, который я использую. Функция вызывается правильно, поскольку добавляется первая опция «Тест». Однако кажется, что функция обратного вызова никогда не активируется, поскольку вторая строка тестового кода не выполняется.
Я подозреваю, что проблема в URL-адресе, который я предоставляю JavaScript '/types/'+$brand
. Я видел в некоторых учебниках, что BASE var используется перед URL-адресом, который я предоставляю, но я не понимаю, почему мой код выше не будет работать. Любые указатели?
Может ли кто-нибудь объяснить мне, где я ошибаюсь?
/laravel/...
, а неlaravel/...
? Кроме того, я рекомендую вам использовать метод 1 или 2. Потому что тогда вы можете опубликовать свой проект на домене БЕЗ изменения кода. 11.07.2013