0

所以我试图为我和我的朋友创建一个链接缩短器,以便在我们的小型服务中心使用,但我遇到了一个小问题。我设置了一个快速服务器来完成这项工作,同时创建了一个我使用邮递员进行测试的文件上传器。两者都可以正常工作,但这就是我遇到问题的地方。每当我使用下面的代码片段尝试将数据发送到“api”时,它甚至都不会发布/触摸网站是的,我调试了它是否 仅在我使用代码不起作用的表单发布/获取方法时才触及它

HTML 代码片段

 <form method="POST" action="/shorten" enctype="application/x-www-form-urlencoded">
                <label for="fUrl" class="sronly">URL</label>
                <input class="input"
                    required
                    placeholder="URL"
                    type="url"
                    name="fUrl"
                    id="fUrl"
                />
    <button type="submit">Shrink This!</button>
    </form>

我尝试了很多东西,我不知道是因为我用 EJS 渲染它还是我用 HTML 文件自己测试了它,但如果这篇文章中有任何内容我错过了让我知道,但无济于事!

4

2 回答 2

0

客户端和服务器之间的映射似乎存在一些问题。尝试将操作值更改为您的 API 端点。

 <form method="POST" action="http://myserver.com/shorten" enctype="application/x-www-form-urlencoded">
            <label for="fUrl" class="sronly">URL</label>
            <input class="input"
                required
                placeholder="URL"
                type="url"
                name="fUrl"
                id="fUrl"
            />
<button type="submit">Shrink This!</button>
</form>
于 2021-03-02T11:03:22.883 回答
0

这是浏览器有点太快/太慢的问题

修复在这里

// thanks to Vikasdeep Singh for this oddly specific url regex test
function isValidURL(string) {
    var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
    return (res !== null)
};

var el = document.getElementById("yourButtonID");
el.addEventListener("click", avoidNSErrorWithFirefox, false); //Firefox

function avoidNSErrorWithFirefox() {
    ElementInterval = setInterval(function() {
        var url = document.getElementById("inputURL").value; // input tag
        if (isValidURL(url)) {
            var xhr = new XMLHttpRequest();
            xhr.open("POST", "https://your-url.com/shorten", true);
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.send(JSON.stringify({
                "url": url
            }));
        }
        clearInterval(ElementInterval);
    }, 0);
};

在我测试过的所有浏览器上都像魅力一样工作

边缘铬歌剧火狐

希望我和我的朋友们的修复可以为您解决表单/快递问题!

于 2021-03-04T02:23:27.673 回答