到目前为止,我主要做了老式网页表格处理:
我想从这种老派的方式转向现代的ajax表格提交。
我看到客户端服务器对话框有两种方式来传输状态(帖子是否成功):
是否有通用方式甚至是互联网标准如何通过ajax处理表单提交?
答案 0 :(得分:2)
通常的做法是发送HTTP代码和JSON有效负载,这可能是4xx代码的错误详细信息,或者是成功的重定向URL。此外,在AJAX世界中,您不必重定向,您可以只停留在同一页面上(通常会向用户提供有关成功操作的一些反馈)。
例如,在你的后端你可以有像
这样的东西@post('/change-password')
if not-logged-in
return { status: 403, message: "Please log in" }
if post[old-password] != user.password
return { status: 400, message: "Please enter the correct password" }
user.change-password(post[new-password])
return { status: 200, redirectURL: '/home' }
// or to stay on the same page:
return { status: 200, message: "Password updated!" }
并在客户端像这样处理它:
function success(json) {
if(json.message)
return showMessage(json.message)
if(json.redirectURL)
window.location.href = json.redirectURL
}
function error(xhr) {
var json = xhr.responseJSON;
showMessage(json.message)
}
$.ajax({
type: 'post',
url: '/change-password',
data: {old-password: $(...).val(), new-password: $(...).val() },
success: success,
error: error
});
答案 1 :(得分:1)
使用HTTP状态代码是限制性的和不正确的。
它的限制因为你基本上可以返回成功或失败,但没有细节(例如,多个字段失败......)
这是不正确的,因为HTTP status codes具有明确定义的含义,其中的含义不适合无效的表单数据。
使用JSON结果更有用,您可以在其中包含所有有意义的信息以供显示。