2014-10-14 10 views
6

Jak przekazać identyfikator z tego wywołania ajax do funkcji getAjax() kontrolera TestController? Kiedy zrobić wywołanie URL jest testUrl? Metoda id = 1Laravel przekazanie danych za pomocą ajax do kontrolera

Route::get('testUrl', '[email protected]'); 

<script> 
    $(function(){ 
     $('#button').click(function() { 
      $.ajax({ 
       url: 'testUrl', 
       type: 'GET', 
       data: { id: 1 }, 
       success: function(response) 
       { 
        $('#something').html(response); 
       } 
      }); 
     }); 
    });  
</script> 

TestController.php

public function getAjax() 
{ 
    $id = $_POST['id']; 
    $test = new TestModel(); 
    $result = $test->getData($id); 

    foreach($result as $row) 
    { 
     $html = 
       '<tr> 
       <td>' . $row->name . '</td>' . 
       '<td>' . $row->address . '</td>' . 
       '<td>' . $row->age . '</td>' . 
       '</tr>'; 
    } 
    return $html; 
} 

Odpowiedz

8

W końcu, po prostu dodaje parametr do trasy :: get() oraz w zaproszeniu url ajax też. Zmieniłem $ _ POST [ 'id'] do $ _GET [ 'id'] w funkcji getAjax() i to dostałem odpowiedź z powrotem

Route::get('testUrl/{id}', '[email protected]'); 

<script> 
    $(function(){ 
     $('#button').click(function() { 
      $.ajax({ 
       url: 'testUrl/{id}', 
       type: 'GET', 
       data: { id: 1 }, 
       success: function(response) 
       { 
        $('#something').html(response); 
       } 
      }); 
     }); 
    });  
</script> 

TestController.php

public function getAjax() 
{ 
    $id = $_GET['id']; 
    $test = new TestModel(); 
    $result = $test->getData($id); 

    foreach($result as $row) 
    { 
     $html = 
       '<tr> 
       <td>' . $row->name . '</td>' . 
       '<td>' . $row->address . '</td>' . 
       '<td>' . $row->age . '</td>' . 
       '</tr>'; 
    } 
    return $html; 
} 
6

Twojego Ajax jest GET ale w sterowniku użyć $ _POST dostać wartość. To jest problem.

Ty możesz

$id = $_GET['id']; 

Ale w laravel, mieć ładny sposób, aby to zrobić. Jest to here. Nie musisz się martwić o czasownik HTTP używany dla żądania, ponieważ wejście jest dostępne w taki sam sposób dla wszystkich czasowników.

$id = Input::get("id"); 

Jeśli chcesz, możesz filtrować typ żądania, aby sterować wyjątkiem. Docs here

Ustal jeśli wniosek Korzystanie AJAX

if (Request::ajax()) 
{ 
    // 
} 
+0

Nie muszę określić trasę dla adresu url w wywołaniu $ .ajax? – learntosucceed

+0

$ .ajax lub $ .post jest takie samo w tym przypadku –