2013-11-29 4 views
1

Я новичок в 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; 
    }); 
}); 
+0

Я понял это сам, теперь это был довольно глупый вопрос, когда я знаю ответ! Для тех, кто это может помочь: есть успокоительный синтаксис контроллера в документации Laravel здесь: http://laravel.com/docs/controllers#restful-controllers В принципе мне нужно изменить routes.php на: Маршрута :: контроллер ('/', 'HomeController'); – user3011462

+0

Это наполовину верно. Вы должны иметь возможность перенаправлять на определенные действия контроллера, как вы показываете («Маршрут :: get ('/', 'HomeController @ getIndex');"). Что-то еще может происходить здесь. – hayhorse

ответ

0

Просто использовать в контроллере:

return json_encode(array('key' => 'val')); 

Для ввода данных, я переехал в плагин JQuery, который работает хорошо для меня. Follow this link. Это как функция выглядит следующим образом:

function someName(){ 
    // A plugin is used for this function 
    $('#form_id').ajaxForm({ 
     url: '/', 
     type: 'post', 
     dataType: 'json', 
     success: function(response){ 
      alert(response.key); 
     } 
    }); 
} 

и соответствующая форма:

<form id="form_id"> 
    <!-- Put your fields here --> 
    <input type="submit" onclick="someName()"> 
</form> 

Я хотел бы предложить вам использовать этот метод, который может зависеть от плагина, но является самым простым. Конечно, вы могли бы использовать инструкцию .submit() вместо привязки ее к событию onclick.

+0

Спасибо за ваш ответ! Мне нравится плагин jquery, но я все еще не могу работать, к сожалению. Если я могу добавить console.log, я вижу, что проблема в том, когда я пытаюсь отправить данные. Похоже, он не может перейти к моему методу postIndex моего контроллера. Считаете ли вы, что это имеет какое-то отношение к моим маршрутам.php или что-то еще? – user3011462

Смежные вопросы