Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你能发送状态码和html网页吗?_Javascript_Html_Express_Http Status Codes - Fatal编程技术网

Javascript 你能发送状态码和html网页吗?

Javascript 你能发送状态码和html网页吗?,javascript,html,express,http-status-codes,Javascript,Html,Express,Http Status Codes,我正在node中使用express framework,我不知道什么是最佳做法,或者这是否是错误的做法,但我想发送状态代码,例如res.status(200).send(“成功”)如果表单输入与服务器匹配,如果不匹配,则发送类似于res.status(403)的内容。发送(“禁止”) 然后在网页中,我可以用发送的响应更新段落元素。因此,用户知道它是否成功 这可能吗?如果是,我怎么做?还有更好的方法吗?当然有可能 摘自express api参考: 资源状态(代码) 设置响应的HTTP状态。它是节点

我正在node中使用express framework,我不知道什么是最佳做法,或者这是否是错误的做法,但我想发送状态代码,例如
res.status(200).send(“成功”)
如果表单输入与服务器匹配,如果不匹配,则发送类似于
res.status(403)的内容。发送(“禁止”)
然后在网页中,我可以用发送的响应更新段落元素。因此,用户知道它是否成功


这可能吗?如果是,我怎么做?还有更好的方法吗?

当然有可能
摘自express api参考:

资源状态(代码)
设置响应的HTTP状态。它是节点response.statusCode的可链接别名

通常情况下,发送状态代码是一种方法。如果您发送的数据没有状态代码,express将自动添加200状态代码,因此您无需手动添加

在客户端,您必须在请求的响应对象中检查非2xx状态代码。下面是一个使用fetchapi的示例

    fetch('/your/api')
      .then((response) => {
        if (!response.ok) { // Check for a non 2xx status code
          throw new Error('Network response was not ok');
        }
        // Do something with the response data
      })
      .catch((error) => {
        // This is only reached when a network error is encountered or CORS is misconfigured on the server-side
        console.error('There has been a problem with your fetch operation:', error);
      });


示例:凭证用例
如果您想编写一个网页,其中包含一个表单,用于输入用户凭据以访问更多内容,我建议您按照以下方式进行操作:

  • 客户端:
  • 服务器端:

您好,谢谢您的回复!我的意思是,当我同时发送网页的状态时,如何发送html页面?我应该把他们送到不同的地方吗?例如,在我的工作中,使用一个表单发送post请求,然后服务器以成功或禁止的方式响应。如何响应html页面?我是否将html页面发送到另一个路径,然后让该路径的客户端获取它?所以它会根据响应的成功或失败来更新元素?或者我制作两个网页?一个成功,一个失败?我不确定。再次感谢!
    fetch('/your/api')
      .then((response) => {
        if (!response.ok) { // Check for a non 2xx status code
          throw new Error('Network response was not ok');
        }
        // Do something with the response data
      })
      .catch((error) => {
        // This is only reached when a network error is encountered or CORS is misconfigured on the server-side
        console.error('There has been a problem with your fetch operation:', error);
      });

    // Function is listening to the submit event of your login form
    function submitLoginForm() {
      let username = document.getElementById("username").value;
      let password = document.getElementById("password").value;
      const options = {
        method: 'POST',
        body: JSON.stringify({ username, password }),
        headers: {
          'Content-Type': 'application/json'
        }
      };
      return fetch('/api/login', options)
        .then((response) => {
          // Check for a non 2xx status code
          if (!response.ok) {
            // Show a failed login hint
            showMessageBox('Login was not granted by the server. Please check you user name or password and try again.', 'error');
          }
          // Your login was successfull, manually redirect to user's dashboard, or whatever content...
        })
        .catch((error) => {
          // This is only reached when a network error is encountered or CORS is misconfigured on the server-side
          console.error('There has been a problem with your fetch operation:', error);
        });

    }
    app.post('/api/login', (req, res, next) => {
      let username = req.body.username;
      let password = req.body.password;
      checkCredentials(username, password, (err) => {
        if (err) {
          return res.status(400).send('Wrong user name or password.');
        }
        // Consider adding a token or a cookie to the response object, so that the user keeps logged in.
        return res.send('Access granted.');
      });
    });