如何在Ajax中提交表单?

在我的onClick应用程序中,我正在使用ajax在叠加层中加载表单,但提交的内容不会重定向到所需的页面。

我尝试了没有ajax和overlay的相同form元素,然后工作正常。因此,表单元素没有问题。我想我缺少一些设置来调用Ajax中的表单提交。

我正在使用的是Web2py应用程序。

任何建议都将不胜感激!

更新:

我还有一个类似的问题。 我正在使用ajax在覆盖中显示数据库表的web2py SQLFORM。表单提交和数据更新工作正常,但是在提交表单后,我想关闭覆盖并重新加载页面,但它却在叠加层内部显示“服务器错误”。

ChatGPT尝试为您解答,仅供参考
在使用 Ajax 提交表单时,您需要阻止浏览器的默认行为,然后使用 Ajax 进行提交。


为此,可以使用 jQuery 的 submit() 方法来捕获表单的提交事件,然后使用 $.ajax() 方法发送请求。例如,可以使用以下代码来提交表单:

$('#form').submit(function(event) {
    event.preventDefault(); // 阻止浏览器的默认行为
    var formData = $(this).serialize(); // 获取表单数据
    $.ajax({
        type: 'POST',
        url: 'process.php', // 提交到的 URL

那么,您可以在提交成功后关闭叠加层,并刷新页面。为此,可以在 success 回调函数中使用 JavaScript 来关闭叠加层,然后使用 location.reload() 方法刷新页面。


例如,可以使用以下代码来实现这一目的:

success: function(response) {
    // 关闭叠加层
    $('#overlay').hide();
    // 刷新页面
    location.reload();
},

那么,您可以在提交成功后关闭叠加层,并刷新页面。为此,可以在 success 回调函数中使用 JavaScript 来关闭叠加层,然后使用 location.reload() 方法刷新页面。

例如,可以使用以下代码来实现这一目的:

Copy code
success: function(response) {
    // 关闭叠加层
    $('#overlay').hide();
    // 刷新页面
    location.reload();
},

请注意,上面的代码假设叠加层的元素的 ID 为 overlay。您需要使用实际的 ID 来替换它。


此外,如果您在使用 Web2py 的 SQLFORM 时遇到“服务器错误”的问题,则可能是因为在调用 SQLFORM.process() 方法后,服务器返回了错误的响应。您可以检查服务器的响应,并在必要时调整代码以解决问题。