如何用jQuery在AJAX请求成功后以POST方式跳转至thank-you.php
实现方案
你只需要在AJAX请求成功后,解除之前绑定的表单提交拦截事件,然后触发表单的原生提交动作即可,这样就能带着原表单的POST数据跳转到thank-you.php。
修改后的完整代码
$("#homeForm").on("submit", function(e){ e.preventDefault(); var $form = $(this); // 缓存表单DOM对象,避免重复查询 var data = $form.serialize(); $.ajax({ url: "api.php", dataType: "json", data: data, type: "POST", success: function(result){ console.log(result); // 先移除我们绑定的submit拦截事件,再触发原生提交 $form.off('submit').submit(); } }); });
额外说明
- 用
$form.off('submit')是为了避免再次触发我们写的AJAX拦截逻辑,确保表单执行原生的POST提交动作 - 如果需要把AJAX返回的
result数据也传递给thank-you.php,可以在提交前动态添加隐藏字段:
success: function(result){ console.log(result); // 把AJAX返回的数据转为字符串添加到表单隐藏字段 $form.append(`<input type="hidden" name="api_response" value="${JSON.stringify(result)}">`); $form.off('submit').submit(); }
内容的提问来源于stack exchange,提问作者user979331
相关产品推荐
相关产品推荐

