如何“捕获”表单的发布请求状态?

时间:2019-05-10 06:21:38

标签: node.js http

我正在使用Node.js(带有express)创建一个网站,而我对此很陌生。我目前停留在如何在客户端“捕获”(不确定专有名词)POST请求响应上。我有一个页面,该页面具有用户填写的表单。用户单击提交按钮后,服务器端将获取信息并进行处理。然后,一旦完成,它就会发送状态码。我要在客户端执行的操作是“捕获”状态代码,具体取决于代码,如果状态良好,则重定向到下一页,否则会向用户弹出警告,告知他们输入错误(或其他错误)这些行)。如果有人可以向我展示最简单的方法(如我仍在学习中),我将不胜感激。

点击“提交”后,浏览器窗口空白,文字为“ OK”

index.html

<!DOCTYPE html>
<html>
<head><title>Index</title></head>
<body>
  <form action="/create" method="POST">
    <input type="text" name="input1" value="Message"></br>
    <input type="number" name="input2" value="0"></br>
    <input type="submit" value="Submit">
  </form>
<script src="app.js"></script>
</body>
</html>

app.js

//where I want to "catch" my post request response

index.js

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(express.static(__dirname+'/views'))
app.use(bodyParser.urlencoded({extended:true}))
app.use(bodyParser.json())

app.post('/create', function(req, res){
//abstract data and send to db
if(okay)
 res.sendStatus(200)
else
 res.sendStatus(400)
})

1 个答案:

答案 0 :(得分:0)

当我点击“提交”时,它会在浏览器窗口中将文本更改为空白:“确定” ...为什么我不能使用HTML表单提交?

这是因为,如果它是纯HTML表单提交,则浏览器将发送HTTP请求,从服务器获取响应,并将响应内容显示为新网页(并替换旧网页)。

为什么我必须使用Ajax请求?

要在不刷新页面的情况下获得服务器的共鸣,您需要发送一个Ajax请求。也就是说,通过JavaScript而不是通过HTML元素发送HTTP请求。这样,响应可以通过JavaScript代码进行处理(“如果响应良好,则重定向到下一页,否则会弹出警报”。

)。

下面列出了示例Ajax代码(使用jQuery):

$.post('/create', {
  input1: 'Message',
  input2: 0
}).done(function(){
  // redirect to the next page.
}).fail(function(){
  // pop up an alert
});