Я новичок в Laravel и ajax. Я пытаюсь получить данные из формы через ajax и вызывать метод в контроллере через тот же ajax. Метод в контроллере выполняет поиск в базе данных, а затем возвращает ответ json, который обрабатывается ajax (эта последняя часть, о которой я все еще думаю, пока еще не сделал). Позвольте мне показать вам, что я сейчас:Laravel 4: манипулирование данными ajax через контроллер
routes.php:
Route::get('/', '[email protected]');
Route::post('/', '[email protected]');
HomeController:
public function getIndex()
{
return View::make('index');
}
public function postIndex()
{
$match = Input::get('search');
$results = Customers::where('name', 'like', '%'.$match.'%')->get();
return Response::json(array('results' => $results));
}
И мой index.blade.php Вид:
<script>
$(document).ready(function() {
$('form#find').submit(function() {
$.ajax({
url : 'CustomerSearch/Public',
type: 'post',
dataType: 'json',
data: $('form#find').serialize(),
});
return false;
});
});
и форма:
{{ Form::open(array('url' => '', 'method' => 'POST', 'id' => 'find')) }}
{{ Form::text('search', '', array('class' => 'search-query', 'placeholder' => 'Search')) }}
{{ Form::submit('Submit', array('class' => 'btn btn-info')) }}
{{ Form::close() }}
Так что я должен получать данные из формы затем отправить его в метод «постиндексного» в контроллере так, обрабатывается и отправляется обратно, не так ли? Кроме того, я получаю сообщение об ошибке «Метод контроллера [index] не найден». когда я фактически не вызываю какой-либо индексный метод, так как оба они именованы по-разному. Я новичок в этом, так что извините, если не ясно.
ОБНОВЛЕНИЕ: Как я уже сказал в комментариях, я узнал, что объединение маршрута в маршрут :: контроллер избавился от моей предыдущей проблемы, но, к сожалению, я все еще не могу получить ajax для отправки данных на контроллер. Я не получаю ошибок, но ajax ничего не загружает в контроллер. Любая идея, что может быть не так с моей AJAX ?:
$(document).ready(function() {
$('form#find').submit(function() {
$.ajax({
url : '{{URL::to('/')}}',
type: "POST",
dataType: 'json',
data: { search: $('.search-query').val() },
success: function(info){
console.log(info);
}
});
return false;
});
});
Я понял это сам, теперь это был довольно глупый вопрос, когда я знаю ответ! Для тех, кто это может помочь: есть успокоительный синтаксис контроллера в документации Laravel здесь: http://laravel.com/docs/controllers#restful-controllers В принципе мне нужно изменить routes.php на: Маршрута :: контроллер ('/', 'HomeController'); – user3011462
Это наполовину верно. Вы должны иметь возможность перенаправлять на определенные действия контроллера, как вы показываете («Маршрут :: get ('/', 'HomeController @ getIndex');"). Что-то еще может происходить здесь. – hayhorse