当前位置: 首页 > 知识库问答 >
问题:

Laravel-如何使用Ajax将数据从复选框按钮发送到控制器

上官波鸿
2023-03-14

我正在尝试有一个切换按钮(复选框)更改我的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应该发送的数据。

实际结果:在我的控制方没有发生任何事情

共有1个答案

郁灿
2023-03-14

我自己找到了解决办法。我基本上在我的控制器中添加了以下代码:

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
 类似资料:
  • 单击下面我调用的ajax函数代码按钮继续预订 路线 控制器

  • 问题内容: 我想通过jQuery的.ajax()在我的网站上提交一个POST表单,该表单包含一个textarea字段和一个输入字段(类型为“ checkbox”,其中复选框的数量为任意/可变)。PHP接收到textarea数据,并且ajax响应已正确显示给用户。但是,PHP似乎没有收到复选框数据(是否选中了复选框)。我该如何工作?这是我的代码: HTML: jQuery: 现在,PHP 一切正常:

  • 问题内容: 如何将ID从此Ajax调用传递给TestController getAjax()函数?当我打电话时,网址是testUrl?id = 1 TestController.php 问题答案: 最后,我只是将参数添加到Route :: get()以及ajax url调用中。我在getAjax()函数中将$ _POST [‘id’]更改为$ _GET [‘id’],这使我的回复 TestCont

  • seleccion“对象它是一个实体,具有我从Ajax发送的JSON的一些属性,”seleccionados“是一个列表,保存接收到的数组,但当我发送它时,obj参数总是返回一个空对象,Ajax发送错误函数,我认为问题是我在向对象发送数组,但我不知道如何解决它 选择对象模型:

  • 问题内容: 我有一个带有很多表单字段(12 xn行)的表单。每行中的第一个字段(代表产品)是一个类似于以下内容的复选框: 每个复选框的值都是唯一的。 我正在尝试将检查后的值发送到PHP脚本以通过Ajax进行处理。我遇到的问题是将ID正确获取到服务器。我尝试使用以下几种方法: 和 但是这些都会导致在服务器上获取此信息: 我可以序列化整个表单并将其发送过来,但是这可能导致发送的许多数据将不被使用。 如

  • 我在建一个拉威尔的网站。我希望提交的表单数据运行查询,并将结果插入表格式。我正在使用oracle DB,并已将其连接到Laravel。另外,我已经创建了表单,查询结果正确。我不能做的是将结果成功地传递到表中。 我的文件如下: > Routes.php(或web.php较新的laravel版本): 搜索。刀身php(带有post方法的表单) 我的控制器(NewController.php)运行查询。