【问题标题】:Using XMLHttpRequest and post使用 XMLHttpRequest 并发布
【发布时间】:2021-03-20 06:00:36
【问题描述】:

表单与参数 action="(php 文件的路径)" 一起工作正常,但是当我尝试使用 XMLHttpRequest 时,我没有得到任何响应。 我想使用 XMLHttpRequest 的原因是我想将响应(文本)保存到一个数组中。

function receivedData(serverReply) {
        if (serverReply.readyState == 4 && serverReply.status == 200) {
            document.getElementById('main').innerText = serverReply.responseText;
            }
        else {
            console.debug('problem ' + serverReply.errorCode);
        }
    }

    function sendRequest() {
        let myForm = new FormData(document.getElementById('timeDateFormId'));
        let xhr = new XMLHttpRequest();
        xhr.open("POST", "get3.php");
        xhr.addEventListener('readystatechange', function () { receivedData(xhr) }, false);
        xhr.send(myForm);
    }

    document.getElementById('timeDateFormId').addEventListener('submit', sendRequest, false)
<form id="timeDateFormId" method="post">
    <label>From date (YYYYMMDD)</label>
    <input type="text" name="fDate">
    <br>
    <label>To date (YYYYMMDD)</label>
    <input type="text" name="tDate">
    <br>
    <label>From time (HH:MM)</label>
    <input type="text" name="fTime">
    <br>
    <label>To time (HH:MM)</label>
    <input type="text" name="tTime">
    <br>
    <input type="submit" name="submit" value="go">
</form>

【问题讨论】:

标签: post xmlhttprequest


【解决方案1】:

提交表单时调用sendRequest方法。

提交表单会使浏览器导航到表单提交的响应。

这会加载一个取消 Ajax 请求的新页面。


如果你想运行 JavaScript,你需要阻止表单提交的默认行为。

function sendRequest(evt) {
    evt.preventDefault();
    // etc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2011-11-03
    • 2015-09-15
    • 2018-05-01
    • 2013-09-06
    • 2013-10-23
    • 2011-04-22
    相关资源
    最近更新 更多