dede自定义表单提交后如何跳转返回指定页面?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文
  1. 推荐方法:修改PHP源文件(最直接、最常用)
  2. 进阶方法:使用JS回调(更灵活,适合AJAX提交)

下面我将详细介绍这两种方法。

dede自定义表单提交后跳转返回
(图片来源网络,侵删)

修改PHP源文件(最直接)

这是最直接有效的方法,直接修改处理表单提交的核心文件。

第1步:找到并打开处理文件

你需要找到处理自定义表单提交的PHP文件,这个文件通常位于 /plus/ 目录下。

文件路径:/plus/diy.php

使用FTP或主机管理面板,下载这个文件到你的电脑上,然后用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开它。

dede自定义表单提交后跳转返回
(图片来源网络,侵删)

第2步:定位关键代码

diy.php 文件中,找到处理完数据插入数据库后的逻辑部分,通常在文件末尾,你会看到类似这样的代码:

// ... 前面的代码是验证和处理逻辑 ...
// 保存到主表
if($diy->table == $diy->tableadd)
{
    if($id = $diy->add($dede_fieldarr, $dede_addvalue))
    {
        showmsg('发布成功,请等待管理员审核!', $GOTO);
    }
}
else
{
    if($diy->add($dede_fieldarr, $dede_addvalue))
    {
        showmsg('发布成功,请等待管理员审核!', $GOTO);
    }
}

这里的 showmsg() 函数就是用来显示提示信息并跳转的,第二个参数 $GOTO 就是跳转的目标URL。

第3步:修改跳转地址

我们需要修改这个 $GOTO 变量,让它指向我们想要的页面。

情况1:跳转到指定页面(/thankyou.html

dede自定义表单提交后跳转返回
(图片来源网络,侵删)

这是最常见的需求,直接给 $GOTO 赋值一个你准备好的页面URL即可。

// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = '/thankyou.html'; // 设置为你想要跳转的页面,可以是任意URL
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);

说明:

  • /thankyou.html 这个页面需要你自己在DedeCMS后台新建一个单页文档,并填入“感谢您的留言”等内容。
  • 提示信息 '发布成功,感谢您的留言!' 也可以根据你的喜好修改。

情况2:返回到表单所在的页面

如果你希望用户提交后刷新当前页面,或者停留在当前页面,可以这样设置:

// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = 'javascript:history.go(-1)'; // 返回上一页
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);

或者,你也可以获取当前页面的URL:

// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // 获取当前页URL
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);

情况3:跳转到首页

// 在 showmsg() 函数之前,添加或修改如下代码
$GOTO = '/'; // 跳转到网站根目录,即首页
// ... 原有的 showmsg 代码 ...
showmsg('发布成功,感谢您的留言!', $GOTO);

第4步:保存并上传

修改完成后,保存 diy.php 文件,然后通过FTP上传回服务器的 /plus/ 目录,覆盖原文件即可。

至此,方法一操作完成。 这是最简单、最稳定的方法。


使用JS回调(更灵活)

这种方法不修改PHP核心文件,而是通过在前端表单中添加JavaScript代码来实现跳转,它特别适合需要动态跳转(比如根据提交内容跳转到不同页面)或者使用AJAX提交的场景。

第1步:修改JS代码

在DedeCMS后台生成自定义表单时,系统会自动在表单代码中加入一段JS,你需要找到并修改它。

找到你自定义表单的模板文件(通常在 /templets/plus/ 目录下,文件名是你建表单时填写的模板名,如 diyform.htm)。

在表单代码的底部,找到类似这样的 onsubmit 事件处理代码:

<form ... onsubmit='return _check allowhaha(this)' enctype="multipart/form-data">

_check allowhaha 是一个默认的验证函数,我们需要在这里加入我们的跳转逻辑。

修改方案:

onsubmit 的值修改为一个自定义的函数名,return submitForm(this)

<form ... onsubmit='return submitForm(this)' enctype="multipart/form-data">

第2步:添加JS函数

在同一个模板文件中(diyform.htm),找到 <head> 标签内或页面底部的 <script> 区域,添加如下JavaScript代码:

<script type="text/javascript">
function submitForm(form) {
    // 表单验证逻辑(如果需要的话)
    // ...
    // 使用 AJAX 提交表单,这样页面不会刷新
    $.ajax({
        url: form.action,
        type: 'POST',
        data: $(form).serialize(),
        success: function(response) {
            // 提交成功后的回调
            alert('提交成功,感谢您的留言!'); // 弹出提示
            window.location.href = '/thankyou.html'; // 跳转到指定页面
            // 或者返回上一页
            // window.history.back();
        },
        error: function() {
            alert('提交失败,请稍后重试!');
        }
    });
    // 必须 return false; 来阻止表单的默认提交行为
    return false;
}
</script>

说明:

  1. 这个方法依赖于jQuery库,如果你的网站没有加载jQuery,需要在 <script> 标签前先引入jQuery,
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  2. form.action 会自动获取表单的 action 属性值,也就是 /plus/diy.php
  3. $(form).serialize() 会将表单数据序列化,方便提交。
  4. return false; 是关键,它告诉浏览器不要执行默认的表单提交(页面跳转),从而让我们自己的AJAX代码得以执行。

第3步:保存模板

保存修改后的 diyform.htm 文件,然后去DedeCMS后台的【自定义表单】管理中,点击你对应的表单,点击【更新】或【生成】按钮,使模板生效。

至此,方法二操作完成。


总结与对比

特性 方法一 (修改PHP) 方法二 (JS回调)
优点 简单直接,无需额外知识。
稳定可靠,不依赖前端环境。
符合DedeCMS原生逻辑。
灵活性高,可实现复杂逻辑(如AJAX)。
不修改核心文件,升级DedeCMS时不易丢失。
可提供更好的用户体验(如无刷新提交)。
缺点 修改了核心文件,升级DedeCMS时可能被覆盖。
功能相对固定。
需要一定的JavaScript和AJAX知识。
依赖jQuery等库。
如果用户禁用JS,功能可能失效。
适用场景 - 绝大多数常规需求,特别是简单的页面跳转。
- 不想接触前端代码的开发者。
- 需要无刷新提交、动态跳转等高级功能。
- 希望保持核心文件纯净,便于后期维护。

对于大多数用户来说,方法一已经完全够用且是最优选择,只有在有特殊交互需求时,才推荐使用方法二。

-- 展开阅读全文 --
头像
织梦CMS在Mac下如何链接数据库?
« 上一篇 2025-12-21
dede数据库如何批量去除图片超链接?
下一篇 » 2025-12-21

相关文章

取消
微信二维码
支付宝二维码

目录[+]