【问题标题】:Javascript client get response from serverJavascript客户端从服务器获取响应
【发布时间】:2018-12-02 20:16:34
【问题描述】:

我用html填写表格然后提交。 首先,客户端验证数据(例如,如果 eula 复选框被接受),然后客户端将数据发送到服务器。 服务器还会检查数据是否会向我返回状态码。 如何从服务器获取此状态码?

这里有一些示例 sn-ps

HTML

    <form name="newsletter" method="post" action="/api/newsletter" onsubmit="if(!validate()){return false;} else tryToFetch();"> 
    <input name="name" type="text" id="name"/>
    <input name="eula" type="checkbox" id="eula"/>
    <input  type="submit" name="submit"/> </form>

客户端js:

function validate() {
    if (this.eula.checked == false) { alert ('EULA NOT ACCEPTED'); return false; } else {
        return true; }
}

tryToFetch

function tryToFetch(){
    fetch('http://localhost:3000/api/newsletter')
        .then(function(response) {
            console.log(response.status ) ;
        });
}

服务器.js

app.post('/api/newsletter', urlencodedParser ,function (request, response) {
//Just check some data...
    response.statusCode = 999;
    response.send('999');
});

现在如何在浏览器中获取状态码 999 并进行处理? 甚至可以只使用js来做吗?

【问题讨论】:

  • Status 999 不是标准的 HTTP 响应代码,您不应使用它。 tryToFetch 是什么?
  • 使用 TryToFetch 我正在尝试从服务器获取状态。但它返回状态 200 而不是状态 999。
  • 你能在 devtools(在网络选项卡中)检查 fetch 调用状态吗? - fetch 默认发出 GET 请求,而不是 POST 请求。

标签: javascript node.js express server client


【解决方案1】:

Fetch documentation 中所写:

“fetch 规范与 jQuery.ajax() 在两个主要方面不同:

即使响应是 HTTP 404 或 500,从 fetch() 返回的 Promise 也不会拒绝 HTTP 错误状态。相反,它会正常解析(将 ok 状态设置为 false),并且只会拒绝网络故障或是否有任何事情阻止请求完成。”

所以也许这会导致您的问题?您是否尝试过使用默认的 XMLHttpRequest。

【讨论】:

    猜你喜欢
    • 2019-12-18
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多