我正在尝试有一个切换按钮(复选框)更改我的MySQL数据库中的一些数据。我本质上想有一个很好的管理站点,在其中我可以解锁用户到网站上的某些功能与一个很好的开/关开关。
一切似乎都设置正确,但我的控制器根本没有反应或被触发。
现在,我的视图中有一个工作切换按钮触发了一个javascript函数。在该javascript函数中,我已经设置了要传输到控制器的数据。
我还在JavaScript中设置了Ajax。很明显,Ajax的代码中有这一部分(如果您需要了解我的意思,请参阅我的代码),它表示“成功”或“错误”。在输入{{csrf_token()}}令牌之前,我总是在错误部分结束。然而,现在我总是在拨动我的按钮时进入“成功”部分。
现在我的问题是:尽管Ajax证实了它的成功,但实际上我的控制器中没有发生任何事情。我不知道如何改变这一点,因为没有任何错误代码,也。
这是我的纽扣
<input id = "company_{{$company->id}}" data-id="{{$company->id}}" onchange=myFunction({{$company->id}}) value = {{$company->permissionlevel}} class="toggle-class" type="checkbox" data-onstyle="success" data-offstyle="danger" data-toggle="toggle" data-on="Active" data-off="InActive" {{ $company->permissionlevel ? 'checked' : '' }}>
这是我的javascript(相关部分)
var test = 12; // A random variable for this example
$.ajax({
method: 'POST', // Type of response and matches what we said in the route
url: 'home/update', // This is the url we gave in the route
data: {'test' : test, _token: '{{csrf_token()}}'}, // a JSON object to send back
success: function(response){ // What to do if we succeed
console.log(response);
//alert("Ajax success");
},
error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail
console.log(JSON.stringify(jqXHR));
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
//alert("Ajax error");
}
});
这是我的控制器函数(只是看看会发生什么)
public function update (Request $request)
{
//echo "This is a test";
$data = $request->all(); // This will get all the request data.
dd($data); // This will dump and die
return $data;
}
路线
Route::post('/home/update', 'HomeController@update');
预期结果:控制器向我扔东西。目前,我想要的只是看看我的控制器是否对按钮的按下做出反应,或者我是否可以请求Ajax应该发送的数据。
实际结果:在我的控制方没有发生任何事情
我自己找到了解决办法。我基本上在我的控制器中添加了以下代码:
public function update (Request $request, $id, User $user)
{
$newPermLevel = $request->input('value');
$override = (int) $newPermLevel;
\DB::table('users')->where('id',$id)->update(array(
'permissionlevel'=>$override,
));
}
但是,我需要在我的控制器的开头,就在名称空间后面添加这些小行:
use Illuminate\Http\Request;
use App\User;
只是为了完成,我将留下其他必要的代码在这里,以及任何人在需要更新他的数据库与切换按钮
这是我的路线
Route::post('/home/update/{id}', 'HomeController@update');
这是我的HTML基于按钮的当前状态,我做了一个if语句(使用刀片引擎)创建一个关闭或打开开关。按钮有一个值,本质上是当前数据库条目(在我的例子中,我想用1或0上下跳转)
null
@if ($company->permissionlevel == 0)
<div class="col-sm-5">
<label class="switch">
<input id = "company_{{$company->id}}" data-id="{{$company->id}}" onchange=myFunction({{$company->id}}) value = {{$company->permissionlevel}} class="toggle-class" type="checkbox" data-onstyle="success" data-offstyle="danger" data-toggle="toggle" data-on="Active" data-off="InActive" {{ $company->permissionlevel ? 'checked' : '' }}>
<span class="slider round"></span>
</label>
</div>
@endif @if ($company->permissionlevel == 1)
<div class="col-sm-5">
<label class="switch">
<input id = "company_{{$company->id}}" data-id="{{$company->id}}" onchange=myFunction({{$company->id}}) value = {{$company->permissionlevel}} class="toggle-class" type="checkbox" data-onstyle="success" data-offstyle="danger" data-toggle="toggle" data-on="Active" data-off="InActive" {{ $company->permissionlevel ? 'checked' : '' }}>
<span class="slider round"></span>
</label>
</div>
@endif