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

用ajax更新laravel数据库

艾凯捷
2023-03-14

如何使用复选框使用Ajax仅更新表的一列?

我想使用复选框并更新我的active列,值将是10。如果选中值为1,否则0

html

<label class="switch">
  <input type="checkbox" data-name="active" data-id="{{ $courier->id }}">
  <span class="slider round"></span>
</label>

data-name是我列的名称

数据id是我的行id

控制器功能

public function Updatecourierstatus(Request $request) {
        try {
            $id = $request->input('id');
            $field = $request->input('name');

            $courier = Courier::findOrFail($id);
            $courier->{$field} = //must get 1 or 0 here;
            $courier->save();
        } catch (Exception $e) {
            return response($e->getMessage(), 400);
        }
        return response('', 200);
    }

路由

Route::post('/Updatecourierstatus', 'CourierController@Updatecourierstatus')->name('Updatecourierstatus');
});

JavaScript

不知道怎么处理这个零件!

我的最新代码:

脚本

<script>
    $(function (){
        $.ajaxSetup({
          headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        $('label.switch input[type="checkbox"]').on('click', function (event) {
          $.post("{{route('Updatecourierstatus')}}", { 
            id: $(this).data("id"),
            name: $(this).data("name"),
            state: $(this).is(":checked") ? 0 : 1 // toggles
          }).done(function(data) {
              console.log(data)
          });
        });
    });
</script>

控制器

public function Updatecourierstatus(Request $request) {
            try {
                $id = $request->input('id');
                $field = $request->input('name');
                $state = $request->input('state');

                $courier = Courier::findOrFail($id);
                $courier->{$field} = (int) $state;
                $courier->save();
            } catch (Exception $e) {
               return response($e->getMessage(), 400);
            }
            return response('', 200);
    }

html

<label class="switch">
  <input class="status" type="checkbox" data-name="active" data-id="{{ $courier->id }}" {{ $courier->active == '1' ? 'checked' : ''}}>
  <span class="slider round"></span>
</label>
  1. 我的开关按钮未按预期工作,对于值1打开,对于值0关闭,开关始终处于关闭状态

问题是state:$(this). is(": check")?0:1为"什么是PHP运算符"?"":"打电话来,他们是做什么的?"解释了我必须使用state:$(this). is(": check")?1:0

共有3个答案

施飞鸿
2023-03-14

使用jquery可以非常轻松地做到这一点:

$('input.checkbox').on('change', function(e) {
    $.ajax({
      type: "POST",
      url: url,
      data: {value: $(this).val(), id: $(this).data('id'), name: $(this).data('name')},
      success: function() {
        console.log('submitted')
      }
    });
});
唐默
2023-03-14

如果使用ajax数据参数(如id和name do)检查复选框,则应提交变量显示。然后你可以在控制器中接收并保存它。

陈高寒
2023-03-14

我猜你展示的html是使用lib的,你应该检查lib的细节,他们可能会提供你可以使用的被解雇的事件。

如果没有,您可以像下面这样做,只发送一个ajax请求,当您切换值时,从查看代码namelooks任意集开始,您可能不应该这样做,以防有人发送一个moody列名。

好的,所以您可以在单击复选框时执行ajax请求,并从数据属性中获取idname

<script>
    $(function (){
        $('label.switch input[type="checkbox"]').on('click', function (event) {
          $.post("/Updatecourierstatus", { 
            id: $(this).data("id"),
            name: $(this).data("name"),
            state: $(this).is(":checked") ? 0 : 1 // toggles
          }).done(function(data) {
              console.log(data)
          });
        });
    });
</script>

然后在您的控制器中,只需添加该值:

public function Updatecourierstatus(Request $request) {
    try {
        $id = $request->input('id');
        $field = $request->input('name');
        $state = $request->input('state');

        $courier = Courier::findOrFail($id);
        $courier->{$field} = (int) $state;
        $courier->save();
    } catch (Exception $e) {
       return response($e->getMessage(), 400);
    }
    return response('', 200);
}
 类似资料:
  • 嘿,伙计们,我正在使用Laravel5.7,我正试图发出一个ajax post请求来更新我的数据库。ajax将基于checkbox on change函数发布。例如,如果我关闭复选框,它将发送一个请求,并将我的状态更新为my表中的。尝试之后,我出现了一个错误。有人注意到我做错了什么吗?抱歉,如果我的代码中有一些错误的代码或语法,因为我对Ajax非常陌生。任何帮助都将不胜感激。 AJAX 路线 控制

  • 我想用AJAX和Laravel5.2框架更新数据库表列。我有一个按钮,当我点击该按钮时,它会将一列从更新为。我还使用sweetAlert插件进行弹出式设计。我找了很多。但我没有找到完美的程序。我试过这样做: 路线: WinnerController: 视图中的脚本: 刀片: 刀片前端: 这是更新栏,但更新后它重定向了另一个页面,它只显示弹出它不需要提交弹出的确认按钮。有办法这么做吗?有人能回答我下

  • 全部的 只是想看看用表单中提交的数据更新数据库行的最佳选项是什么。我理解Laravel更新查询生成器,但是我在如何获取表单数据,然后执行该查询方面遇到了困难。相对较新的Laravel:)这是我想出的,只是从我的PHP经验和逻辑: 我曾试图将查询放入一个函数中,然后让表单操作成为函数: 正如我所说,主要问题是试图让命名的表单对象成为更新行的对象。我有两个文本输入字段,分别命名为“body”和“not

  • 在使用AJAX时,我需要有人指导我建立函数更新数据库。当我单击Accept按钮时,Ajax请求将发送到服务器,服务器将执行字段post_status的更新值。开始时,字段post_status has的值为“pending”,执行查询更新后,该值将更改为“accepted”。我下一步该怎么办?请帮帮我。非常感谢你的帮助。 Posts表的数据库: 观点: 代码Javascript: 控制器的功能列表

  • 问题内容: 他目前正在研究必须过滤表中数据的代码。Ajax将调用该链接并获取带有答案的响应(json)结果。但是,我遇到了一个问题。我必须以某种方式呈现表,并且我不想通过append等来执行此操作。 我可以以某种方式再次生成视图或刀片文件吗? 默认视图是DefController @ index,但是ajax使用url,而该控制器是DefController @ gettabledata。 问题答

  • 我有一个PHP laravel projekt,我需要添加一个字段到一个/多个模型(雄辩)。我在php方面没有太多的经验,以前从未尝试过laravel。 现在这个班看起来像这样 我想添加一个名为“level”的字符串字段,但我不知道如何操作。如果我先在MySQL中创建字段,然后更新模型,如果我更新模型,然后Laravel为我更新MySQL? 我期待着听到我能做什么:)