【发布时间】:2018-04-10 19:00:10
【问题描述】:
救命,我卡住了!我正在使用 Node Express 进行 CRUD 设置,但使用 AJAX 发布请求。我的阅读表格工作正常。
表单有一个输入字段,即查找电子邮件。 AJAX 使用以下代码发布表单数据
if ($("#rsvp-search-form").length) {
$("#rsvp-search-form").validate({
rules: {
...
},
messages: {
...
},
submitHandler: function (form) {
$("#loader").css("display", "inline-block");
$.ajax({
type: "POST",
url: "/",
data: $(form).serialize(),
success: function (data, textStatus, jqXHR){
if (typeof data.redirect == 'string')
window.location = data.redirect;
}
,
error: function() {
$( "#loader").hide();
$( "#error").slideDown( "slow" );
setTimeout(function() {
$( "#error").slideUp( "slow" );
}, 5000);
}
});
return false; // required to block normal submit since you used ajax
}
});
}
我有一个到 '/' 的快速发布路由,它返回一个带有 res.status(#).send() 的状态,并根据状态 # 是 400 还是 200 执行正确的成功/错误块。
现在在更新表单上,我有相同的基本设置和更多表单输入,但是 AJAX 代码不会通过执行正确的成功或错误块来处理 res.status(#).send() 响应,而是它只是加载一个与处理请求具有相同 url 的新页面。
AJAX代码请求与上面类似,只是url不同:
submitHandler: function (form) {
$("#loader").css("display", "inline-block");
$.ajax({
type: "POST",
//The website when loaded has an invitation
//object that is passed by express
url: "/rsvp/" +invitation._id,
data: $(form).serialize(),
dataType: 'application/json'
我验证了正确的发布路线正在运行并收到邀请。_id。它返回 res.staus(#).send() 但 ajax 不处理成功或错误块,它只是重定向到请求的 url,但实际上并不呈现 url。
不知道是不是表单还在处理默认动作,是不是express的响应不正确等等
我希望我已经清楚我的问题,并且有人知道我在这里做错了什么。
问候!
【问题讨论】: