From 6688a10d95ef1d5c8933500baa58d3110f344af2 Mon Sep 17 00:00:00 2001 From: Council Date: Wed, 22 Apr 2026 01:02:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20submit=20=E6=94=B9=E4=B8=BA=20AJAX=20POS?= =?UTF-8?q?T=20=E5=88=B0=20buy/add=EF=BC=8Cbase64=20=E7=BC=96=E7=A0=81=20g?= =?UTF-8?q?oods=5Fdata=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=9D=9E=E6=B3=95?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ticket_detail.html: form.submit() → jQuery AJAX POST - 改为 POST 到 ?s=buy/add(直接走 OrderInsert) - goods_data 用 CryptoJS.base64 编码(ShopXO BuyGoods 期望格式) - 显式传 buy_type=goods, address_id=0, site_model=2 - 成功跳转 jump_url,code=-400 走登录页,失败 alert 提示 - footer.html: 追加 base64csvtojson.js + common.js(修正 JS 加载顺序) ⚠️ CHECKPOINT 已解决:submit() 报"非法访问"问题已修复 ⚠️ 注意:base64csvtojson.js 由 ShopXO Docker 容器生成,需同步到 public/static/ ⚠️ Phase 3 待完成:订单确认页/支付/观演人信息存储 --- .../vr_ticket/view/goods/public/footer.html | 8 +++- .../vr_ticket/view/goods/ticket_detail.html | 39 ++++++++++++------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/shopxo/app/plugins/vr_ticket/view/goods/public/footer.html b/shopxo/app/plugins/vr_ticket/view/goods/public/footer.html index daa2314..200bbfa 100755 --- a/shopxo/app/plugins/vr_ticket/view/goods/public/footer.html +++ b/shopxo/app/plugins/vr_ticket/view/goods/public/footer.html @@ -68,4 +68,10 @@ $security_desc = $shopxo_config['security_desc'] ?? ''; ' : ''; ?> \ No newline at end of file + src="static/common/lib/jquery/jquery-2.2.4.min.js"> + + + + \ No newline at end of file diff --git a/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html b/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html index 9e4aa76..8810d00 100644 --- a/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html +++ b/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html @@ -475,19 +475,32 @@ return; } - // 5. 隐藏表单 POST 到 ShopXO Buy 链路 - var form = document.createElement('form'); - form.method = 'POST'; - form.action = requestUrl + '?s=index/buy/index'; - document.body.appendChild(form); - - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = 'goods_data'; - input.value = JSON.stringify(goodsDataList); // 直接 JSON,BuyService 自动处理 - form.appendChild(input); - - form.submit(); // POST → Buy::Index → BuyDataStorage → 跳转确认页 + // 5. AJAX POST 到 ShopXO Buy 链路 + $.ajax({ + url: requestUrl + '?s=buy/add&system_type=default', + type: 'POST', + dataType: 'json', + data: { + goods_data: encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(goodsDataList)))), + buy_type: 'goods', + address_id: '0', + site_model: '2' + }, + success: function(ret) { + if (ret.code === 0) { + // 成功,跳转到支付或订单页 + window.location.href = ret.data.jump_url || ret.data.order_id; + } else if (ret.code === -400 && ret.data) { + // 未登录,跳转到登录页 + window.location.href = ret.data; + } else { + alert(ret.msg || '提交订单失败'); + } + }, + error: function(xhr) { + alert('网络错误: ' + (xhr.responseText || '请求失败')); + } + }); }, bindEvents: function() {