繁体   English   中英

JavaScript-使用ReST API的问题

[英]JavaScript - Issue with using ReST API

不知道我在做什么错。

的HTML

<form id="inp" onsubmit="process()">
    <input id="link" type="text" name="link" placeholder="Enter your link">
    <input id="submit" type="submit" name="submit" value="&rarr;">
</form>

的JavaScript

    function createRequest() {
        let result = null;
        if (window.XMLHttpRequest) {
            result = new XMLHttpRequest();
            result.overrideMimeType('application/json');
        }
        else {
            window.alert("Abort!");
        }
        return result;
    }

    let c=0;
    function process() {
        let l = document.getElementById("inp").link.value;
        let resp;
        let req = createRequest();
        let payload = {
            link: l,
            ignoreException: true
        };
        req.open("POST", url, true);
        req.setRequestHeader("Content-Type", "application/json");
        req.send(payload);
        req.onreadystatechange = function () {
            if (req.readyState === 4 && req.status === 200) {
                resp = req.responseText;
                console.log("response text - " + resp);
            }
            console.log(req.readyState + " " + req.status + " " + c);
        };
    }

我希望它记录每个状态更改的readyState和状态,并记录最终状态的响应文本。

它记录“ 4 0 1”,这意味着它仅更改一次状态,并将其直接更改为最终状态。

当执行.open()、. setRequestHeader()和.send()函数时,应更改状态。

我该如何进行这项工作?

注意:“ url”参数是api url。

如果要为.open()和.setRequestHeader()调用onreadystatechange事件,则需要在调用open()和setRequestHeader()函数之前注册onreadystatechange事件处理程序。

因此,如果将onreadystatechange定义上移几行,那应该很好。

所以像这样:

    function process() {
    let l = document.getElementById("inp").link.value;
    let resp;
    let req = createRequest();
    let payload = {
        link: l,
        ignoreException: true
    };
    req.onreadystatechange = function () {
        if (req.readyState === 4 && req.status === 200) {
            resp = req.responseText;
            console.log("response text - " + resp);
        }
        console.log(req.readyState + " " + req.status + " " + c);
    };
    req.open("POST", url, true);
    req.setRequestHeader("Content-Type", "application/json");
    req.send(payload);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM