我使用带有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);
}