2014-10-14 21 views
6

Làm cách nào để chuyển id từ cuộc gọi ajax này tới hàm getAjax() của TestController? Khi tôi làm cuộc gọi url là testUrl? Phương pháp id = 1Laravel truyền dữ liệu bằng cách sử dụng ajax đến bộ điều khiển

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

Trả lời

8

Cuối cùng, tôi chỉ cần thêm tham số vào Route :: get() và trong ajax gọi url quá. Tôi đã thay đổi $ _POST [ 'id'] đến $ _GET [ 'id'] trong getAjax() chức năng và điều này có phản ứng của tôi trở lại

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

của ajax của bạn là GET nhưng trong điều khiển bạn sử dụng $ _POST để có được giá trị. Đây là vấn đề.

Bạn có thể bạn

$id = $_GET['id']; 

Nhưng trong Laravel, nó có một phương pháp khá để làm điều này. Đó là here. Bạn không cần phải lo lắng về động từ HTTP được sử dụng cho yêu cầu, vì đầu vào được truy cập theo cùng một cách cho tất cả các động từ.

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

Nếu muốn, bạn có thể lọc loại yêu cầu để kiểm soát ngoại lệ. Docs here

Xác định nếu yêu cầu được dùng AJAX

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

Đừng tôi cần để chỉ định tuyến đường cho url trong cuộc gọi $ .ajax? – learntosucceed

+0

$ .ajax hoặc $ .post giống nhau trong trường hợp này –

Các vấn đề liên quan