Jquery 用于显示和更改DB字段状态的ajax按钮-Laravel 4

Jquery 用于显示和更改DB字段状态的ajax按钮-Laravel 4,jquery,ajax,laravel,Jquery,Ajax,Laravel,我正在尝试创建一个简单的设置面板。 我想创建几个按钮,用于显示和更改某些选项的状态,并在0和1之间切换它们的值。 基本上,这就是我们在Stackoverflow中投票的答案 在友好的帮助下,我创建了一个按钮,它可以工作: 视图: 控制器: public function toggle_option() { $userdata=UserWorkspace::where('user_id','=',Auth::user()->id)->first() JS: 问题: 在控制器方法或js中创

我正在尝试创建一个简单的设置面板。 我想创建几个按钮,用于显示和更改某些选项的状态,并在0和1之间切换它们的值。 基本上,这就是我们在Stackoverflow中投票的答案

在友好的帮助下,我创建了一个按钮,它可以工作:

视图:

控制器:

    public function toggle_option() {
$userdata=UserWorkspace::where('user_id','=',Auth::user()->id)->first()

JS:

问题:

  • 在控制器方法或js中创建多个按钮,而不克隆代码。在Sisou的解决方案中,控制器不知道我要更改哪个表-因此链接必须携带信息,对吗? 我需要c。单个视图中有20个按钮。 现在,我唯一想到的是这个丑陋的筑巢如果(对不起):

    路由::post('switch/{option}',数组( '作为'=>'开关。切换\u选项', '使用'=>'UserWorkspacesController@toggle_option' ) );

  • 对于要切换的每个选项/按钮,请分别选择:

    if($option = 1) {
    if($userdata->ShowToolbar == 1)
    {
        $userdata->ShowToolbar = 0;
     ... and so on...
    

    Thx

    如果您希望同一个按钮将值从1更改为0或从0更改为1,我建议您让服务器端处理适当的值,然后从按钮调用路由(无任何参数)。所以你的按钮就是

    <a data-remote="true" data-method="post" href="{{ route('join.join_an_action') }}" id="experiment_update">
    
    至于其他按钮:您需要使DOM相对于链接进行爬网:

    $('a[data-remote=true]').on('ajax:beforeSend', function(xhr, settings) {
        $(this).find('.dropdown-toggle').click();
    });
    $('a[data-remote=true]').on('ajax:success', function(xhr, data, status) {
        $(this).text(data.interface_update);
    });
    

    那么你能把答案标为正确答案吗?:)我这样做了,但它不能解决同一视图上的多个按钮的问题-我更新了我的初始问题-请检查。您还必须编辑内容以向控制器部分添加两行,像我这样的noob可能会遗漏一些明显的内容。开始时:$userdata=UserWorkspace::where('user_id','=',Auth::user()->id)->first();最后是:returnresponse::json($Response);如果您想更改不同的表(意思是:不同的模型),那么就无法绕过多个
    If
    语句,因为模型和属性都必须更改。对于同一模型中的不同选项,您可以在
    开关($option){case1:$attribute='ShowToolbar';break;case2:…}
    中设置属性名称,然后在最后只有一个if语句检查它是
    1
    还是
    0
    。在这里,如果($setactionstatus->attributes[$attribute]==1){$setactionstatus->attributes[$attribute]=0}或者{…},您将使用
    $('a[data-remote=true]').on('ajax:beforeSend', function(xhr, settings) {
        $(this).find('.dropdown-toggle').click();
    });
    $('a[data-remote=true]').on('ajax:success', function(xhr, data, status) {
        $(this).text(data.toggle_update);
    });
    
    if($option = 1) {
    if($userdata->ShowToolbar == 1)
    {
        $userdata->ShowToolbar = 0;
     ... and so on...
    
    <a data-remote="true" data-method="post" href="{{ route('join.join_an_action') }}" id="experiment_update">
    
    if($setactionstatus->Ajaxtest === 1)
    {
        $setactionstatus->Ajaxtest = 0;
        $response = array(
            'interface_update' => trans('messages.un_joined')
        );
    }
    else
    {
        $setactionstatus->Ajaxtest = 1; // This also handles newly created UserWorkspaces
        $response = array(
            'interface_update' => trans('messages.joined')
        );
    }
    
    $setactionstatus->save();
    
    $('a[data-remote=true]').on('ajax:beforeSend', function(xhr, settings) {
        $(this).find('.dropdown-toggle').click();
    });
    $('a[data-remote=true]').on('ajax:success', function(xhr, data, status) {
        $(this).text(data.interface_update);
    });