2014-10-14 11 views
6

Wie übermittle ich die ID von diesem AJAX-Aufruf an die TestController-Funktion getAjax()? Als ich den Anruf zu tun ist die URL testUrl? Id = 1Laravel übergibt Daten mit Ajax an Controller

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; 
} 

Antwort

8

Am Ende Verwendung Ist, habe ich nur noch die Parameter auf den Weg :: get() und in der auch URL-Aufruf Ajax. Ich änderte $ _POST [ 'id'] bis $ _GET [ 'id'] in der getAjax() Funktion und dies habe meine Antwort zurück

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

Methode Ihres Ajax ist zu erhalten, aber in der Steuerung verwenden Sie $ _POST Wert zu erhalten. Das ist ein Problem.

Sie können Sie

$id = $_GET['id']; 

Aber in Laravel, hat es eine ziemlich Methode, dies zu tun. Es ist here. Sie müssen sich nicht um das HTTP-Verb kümmern, das für die Anforderung verwendet wird, da auf die Eingabe für alle Verben auf die gleiche Weise zugegriffen wird.

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

Wenn Sie möchten, können Sie Anforderungstyp zur Steuerung der Ausnahme filtern. Docs here

bestimmen, ob der Antrag AJAX

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

Nicht ich brauche um eine Route für die URL im $ .ajax Call anzugeben? – learntosucceed

+0

$ .ajax oder $ .post ist in diesem Fall dasselbe –

Verwandte Themen