在我的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() 方法后,服务器返回了错误的响应。您可以检查服务器的响应,并在必要时调整代码以解决问题。