未定义的索引AJAX Laravel


Undefined index AJAX Laravel

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

路线

Route::post('/live/{stream_active}/{vid_url}', 'Controller@getAjax');

控制器

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.');
        }
});

首先,它不起作用,因为您实际上正在发送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', 'Controller@getAjax');
$.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);
}