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

DNN环境下JS表单提交后无法跳转至目标页面问题求助

解决DNN环境中表单提交后不跳转的问题

首先看你的代码,有一个明显的语法错误导致表单无法正确创建和提交,另外还有几个可能影响跳转的点,我一步步帮你解决:

1. 修复表单字符串拼接的错误

你的postURL函数里,HTML字符串的拼接出现了问题——闭合的</form>被放在了加号外面,导致生成的表单元素不完整,浏览器无法识别为有效的表单,自然无法触发提交跳转。

2. 修正后的代码

我调整了代码的拼接逻辑,同时优化了表单提交的触发方式,避免可能的事件拦截:

function postURL(url) { 
  // 把所有表单HTML拼接成完整的字符串
  var formHtml = "<form action='" + url + "' method='post'>" + 
    "<input type='hidden' name='CheckedData' value='" + JSON.stringify(CheckedArray) + "'/>" + 
    "<input type='hidden' name='URL' value='CQLandingPage' />" + 
    "</form>";
  var form = $(formHtml); 
  $('body').append(form); 
  // 触发原生DOM元素的提交,避免jQuery事件绑定的拦截
  form[0].submit(); 
  // 提交后移除表单,清理页面
  form.remove();
} 
function Checkout() { 
  var CheckOutUrl = "https://www.facebook.com/"; 
  postURL(CheckOutUrl); 
}

3. 额外注意事项

  • 跨域提交限制:你要跳转的是外部域名,虽然表单POST跨域是允许的,但如果目标网站不接受外部提交的POST请求,可能会出现跳转失败或返回原页面的情况。如果只是需要跳转而不需要传递POST数据,可以直接用window.location.href = CheckOutUrl;替代表单提交。
  • DNN环境的特殊拦截:DNN可能自带一些表单验证或事件绑定脚本,可能会阻止表单的默认提交行为。用form[0].submit()触发原生提交可以绕过这类jQuery绑定的拦截事件。
  • 数据转义:如果CheckedArray里包含特殊字符(比如引号),JSON.stringify后可能会破坏HTML结构,建议对值进行转义,比如用encodeURIComponent(JSON.stringify(CheckedArray))来避免这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:26:52