weixin_33736048 2019-05-16 00:25 采纳率: 0%
浏览 67

为什么Ajax请求被中止?

I want to send Ajax request to server and get HTML text. I found that the server successfully receive the request and work with DB, but Ajax request is aborted at some point and fail to load data. I have no clue what happens..

JS

const listGroup = document.getElementById("list-group");

    function sendData() {
        const form = document.getElementById("create-memo-form");
        const formData = new FormData(form);
        const XHR = new XMLHttpRequest();
        let urlEncodedData;
        const urlEncodedDataPairs = [];

        for(let pair of formData) {
            urlEncodedDataPairs.push(encodeURIComponent(pair[0]) + '=' + encodeURIComponent(pair[1]));
        }

        urlEncodedData = urlEncodedDataPairs.join('&').replace(/%20/g, '+');



        XHR.addEventListener('loadstart', function() {
            console.log("loadstart");
        });
        XHR.addEventListener('load', function() {
            console.log("load");
        });
        XHR.addEventListener('loadend', function() {
            console.log("loadend");
        });
        XHR.addEventListener('progress', function() {
            console.log("progress");
        });
        XHR.addEventListener('error', function() {
            console.log("error");
        });
        XHR.addEventListener('abort', function() {
            console.log("abort");
        });

        XHR.onreadystatechange = function() {
            console.log(XHR.readyState + ' ' + XHR.status);
            if(XHR.readyState === XMLHttpRequest.DONE) {
                console.log(XHR.getAllResponseHeaders());
            }

            if (XHR.readyState === XMLHttpRequest.DONE && XHR.status === 200 ) {

                console.log(XHR.responseText);
                //listGroup.removeChild(listGroup.childNodes[0]);
                //listGroup.innerHTML = XHR.responseText + listGroup.innerHTML;
            }
        };


        XHR.open('POST', 'create-memo');

        XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

        XHR.send(urlEncodedData);
    }

createMemoForm.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div class="list-group-item">
    <form:form modelAttribute="newMemo" id="create-memo-form">
        <form:input path="content" /><br>
        <button onclick="sendData()">Write</button><br>
        <form:errors cssClass="error" />
    </form:form>
</div>

createMemoSuccess.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="createMemoForm.jsp" />
<div class="list-group-item">
    <h4 class="list-group-item-heading">${createdMemo.content}</h4>
    <div class="memo-btn-group">
        <span class="write glyphicon glyphicon-pencil"></span>
        <span class="glyphicon glyphicon-trash">Delete</span>
        <span class="label ${createdMemo.cssClass}">${createdMemo.priorityString}</span>
        <span>${createdMemo.deadline}</span>
    </div>
</div>

Controller

@RequestMapping("/create-memo")
    public String createMemo(Model model, @ModelAttribute("newMemo") Memo newMemo, BindingResult bindingResult, HttpSession session) {
        System.out.println("inside createMemo method");
        Member currentMember = (Member) session.getAttribute("currentMember");
        newMemo.setMemberId(currentMember.getId());
        if(memoService.addMemo(newMemo)) {
            model.addAttribute("newMemo", new Memo());
            model.addAttribute("createdMemo", newMemo);
            System.out.println("A");
            return "createMemoSuccess";
        } else {
            bindingResult.reject("create-memo-failure", "Failed to write");
            System.out.println("B");
            return "createMemoForm";
        }
    }

Firefox console printed these lines:

2 0
4 0

abort 
loadend
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
    • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序