You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jQuery通过AJAX提交页面元素的值?附HTML代码示例

使用jQuery通过AJAX提交Checkbox的状态数据

没问题,我来帮你实现用jQuery通过AJAX提交这些checkbox的状态数据。下面分两种方案来实现,你可以根据自己的习惯选择:

方案一:保留原内联onchange事件

你的HTML里已经给checkbox绑定了onchange="getButtonDetails(this)",那我们直接实现这个函数即可:

function getButtonDetails(checkbox) {
    // 把原生DOM checkbox转成jQuery对象,方便后续操作
    const $checkbox = $(checkbox);
    
    // 收集需要提交的核心数据
    const submitData = {
        // 从data-title属性获取标识(比如printing、engraving1)
        serviceType: $checkbox.data('title'),
        // 从data-order获取订单号
        orderNumber: $checkbox.data('order'),
        // 根据checkbox的选中状态设置对应值(原value是0,选中时我们传1更合理)
        status: $checkbox.is(':checked') ? 1 : 0
    };

    // 发送AJAX请求到后端接口
    $.ajax({
        url: '/your-backend-api', // 替换成你实际的后端接口地址
        type: 'POST', // 接口要求GET的话就改成GET
        data: submitData,
        // 如果是Laravel这类框架,需要带上CSRF令牌,否则会被拦截
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        success: function(response) {
            // 请求成功后的处理,比如给用户提示
            console.log('状态更新成功:', response);
            alert('服务状态已更新');
        },
        error: function(xhr, status, error) {
            // 请求失败的处理
            console.error('提交失败:', error);
            alert('更新失败,请稍后重试');
        }
    });
}

关键说明:

  • 用$(checkbox)把原生DOM元素转为jQuery对象,就能方便使用jQuery的data()、is()等方法
  • data('title')可以直接获取HTML里的data-title属性值,不用手动写getAttribute
  • 因为你的checkbox默认value是0,所以选中时我们手动设置为1,这样后端能清晰区分状态
  • 如果后端不需要CSRF验证,可以去掉headers这部分

方案二:分离JS与HTML(推荐)

内联事件虽然简单,但不利于代码维护,更推荐把事件绑定和HTML分开:

首先修改你的HTML,去掉onchange属性:

<td><input type="checkbox" data-toggle="switch" data-title="printing" data-order="{{ $order->order_number }}" class="ct-primary" value="0" /></td>
<td><input type="checkbox" data-toggle="switch" data-title="engraving1" data-order="{{ $order->order_number }}" class="ct-primary" value="0" /></td>

然后写jQuery的事件绑定逻辑:

// 页面加载完成后再绑定事件
$(document).ready(function() {
    // 给所有带ct-primary类的checkbox绑定change事件
    $('.ct-primary').on('change', function() {
        const $checkbox = $(this);
        const submitData = {
            serviceType: $checkbox.data('title'),
            orderNumber: $checkbox.data('order'),
            status: $checkbox.is(':checked') ? 1 : 0
        };

        $.ajax({
            url: '/your-backend-api',
            type: 'POST',
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            data: submitData,
            success: function(res) {
                console.log('操作成功:', res);
            },
            error: function(err) {
                console.error('操作失败:', err);
            }
        });
    });
});

这种方式的好处:

  • HTML结构更干净,没有混杂JS代码
  • 所有事件逻辑集中在一起,后续修改或扩展更方便
  • 如果后续新增同类checkbox,不需要再手动加onchange事件,自动生效

内容的提问来源于stack exchange,提问作者FabricioG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:59:52