2015-02-06 116 views
1

我与json一起使用laravel将我的数据传递给控制器​​。在html模板文件中似乎一切正常。但是当涉及到控制器时,$ _GET方法根本不起作用。未定义的索引。未定义的索引AJAX Laravel

路线

Route::post('/live/{stream_active}/{vid_url}', '[email protected]'); 

控制器

public function getAjax($stream_active,$vid_url) 
{ 
    $stream_active = "1"; 
    $vid_url = $_GET['vid_url']; //Undefine index 

    $input = Input::all(); 
    $full_path = "http://xx.xxx.xx.xx/vod/".$vid_url; 

    $input['stream_active'] = $stream_active; 
    $input['vid_url'] = $full_path; 
    $this->video->create($input); 
} 

AJAX

$.ajax({ 
     url : '/live/{stream_active}/{vid_url}',  
     type : 'POST', 
     data : { stream_active : '1', vid_url : path_url}, 
     success : function (data) 
     { 
      alert('Updated completed.'); 
     } 
}); 

回答

0

首先,它不会因为找你的工作e实际发送POST请求。但也因为你必须在你的路线参数,你会真正的URL进行调用的时候使用它:

$.ajax({ 
    url : '/live/1/'+path_url,  
    type : 'POST', 
    success : function (data) 
    { 
     alert('Updated completed.'); 
    } 
}); 

,然后用它获得注入到你的控制器中的变量:

public function getAjax($stream_active,$vid_url) 
{ 
    $full_path = "http://xx.xxx.xx.xx/vod/".$vid_url; 

    $input['stream_active'] = $stream_active; 
    $input['vid_url'] = $full_path; 
    $this->video->create($input); 
} 

替代的解决办法是删除URL参数和发送数据,如你现在做的事:

Route::post('/live', '[email protected]'); 

$.ajax({ 
    url : '/live',  
    type : 'POST', 
    data : { stream_active : '1', vid_url : path_url}, 
    success : function (data) 
    { 
     alert('Updated completed.'); 
    } 
}); 


public function getAjax() 
{ 
    $input = Input::all(); 
    $input['vid_url'] = "http://xx.xxx.xx.xx/vod/" . $input['vid_url']; 
    $this->video->create($input); 
} 
+0

对于替代解决方案,它不会与我的完整路径连接,而不是单独连接到$ vid_url。 @lukasgeiter – AndroidBeginner 2015-02-06 14:32:11

+0

哦,我错过了分配完整的路径。看看更新的答案。 – lukasgeiter 2015-02-06 14:35:03