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

keith-wood jQuery UI Signature本地正常 生产环境无法使用提交报错

问题排查步骤

  • 优先检查线上静态资源加载状态
    打开浏览器控制台的「网络」标签,确认jQuery、jQuery UI核心库、jQuery UI Signature插件的JS和CSS文件全部加载成功,无404、跨域、资源被拦截的报错。本地环境资源加载速度快,线上经常会出现资源路径配置错误、CDN资源失效的情况,这是最常见的诱因。
  • 调整JS执行时机,确保DOM就绪后再初始化组件
    你当前的JS代码没有包裹在DOM加载完成的回调中,线上环境渲染速度慢于本地,可能出现#sig元素还没渲染就执行初始化逻辑,导致组件初始化失败。修改代码如下:
$(function() {
  // 所有签名相关代码放到这个回调里
  var sig = $('#sig').signature({syncField: '#signature64', syncFormat: 'PNG',svgStyles: true});
  $('#clear').click(function(e) {
    e.preventDefault();
    sig.signature('clear');
    $("#signature64").val('');
  });
})
  • 排查Laravel CSRF校验问题
    从路由配置来看你使用的是Laravel框架,POST请求默认需要携带CSRF令牌,否则会返回419状态码报错。请确认两点:
    1. 页面<head>标签中存在CSRF的meta配置:<meta name="csrf-token" content="{{ csrf_token() }}">
    2. 全局配置AJAX请求自动携带CSRF头:
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    
    如果你是用传统表单同步提交,需要在表单内部加上@csrf blade指令。
  • 校验签名内容同步逻辑
    表单提交前添加调试代码,打印$('#signature64').val()的取值,确认线上环境签名后隐藏域能正确同步到PNG对应的base64内容。如果取值为空,可以尝试移除svgStyles: true配置,或者修改syncFormat为其他兼容格式测试。
  • 排查后端校验规则
    检查BeneficiaryController的store方法中对signed字段的验证规则,确认线上环境没有因为编码、字段长度限制拦截提交的签名内容。可以临时关闭该字段的验证测试提交是否正常,再针对性调整校验规则。
  • 检查HTTPS与跨域配置
    如果线上环境为HTTPS,确认所有静态资源加载、接口请求都使用HTTPS协议,避免浏览器拦截HTTP请求。如果提交接口和当前页面域名不同,确认接口已配置正确的CORS跨域规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:27:00