鍍金池/ 問答/HTML5  HTML/ axios請求不進入then也不進入catch

axios請求不進入then也不進入catch

使用axios post請求,數據成功傳遞插入數據庫,但是axios并沒有進入then,也沒有進入catch,我先對表單的值進行了驗證,使用了onCmd方法,在校驗成功以后才調用了提交方法,如果一次性全部填寫所有數據點擊添加,就不會有then和catch中任何的代碼執(zhí)行,如果空白框,多次點擊提交onCmd方法中的alert提示多次后,就可以成功執(zhí)行then中的alert

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>管理員增加選擇題</title>
    <link rel="stylesheet" href="/css/add/add_choice.css">
    <link rel="stylesheet" href="/css/add/add.css">
    <script src="/js/jquery-3.2.1.js"></script>
    <script src="/js/add/add_choice.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <link rel="stylesheet" >
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>


<div class="centre">

    <!--導航欄-->
    <div class="menu">
        <div class="admin-picture"></div>
        <div class="indexBtn"></div>
        <div class="searchBtn"></div>
        <div class="addBtn"></div>
    </div>

    <div class="show-box">
        <div class="choice"></div>
        <div class="tiankong" onclick="addtiankong()"></div>
        <div class="code" onclick="addcode()"></div>
        <div class="jianda" onclick="addjianda()"></div>
        <div class="program" onclick="addprogram()"></div>

        <!--選擇題特有-->
        <div class="choice-line"></div>
        <div class="addchoice-box">
            <form id="addchoice" >
                <div class="title"></div>
                <span class="problem">題目</span>
                <textarea class="problem-box" name="content" data-ng-model="formData" required></textarea>

                <span class="A">選項A</span>
                <textarea class="A-box" name="sectionA" data-ng-model="formData" required></textarea>
                <span class="B">選項B</span>
                <textarea class="B-box" name="sectionB" data-ng-model="formData" required></textarea>
                <span class="C">選項C</span>
                <textarea class="C-box" name="sectionC" data-ng-model="formData" required></textarea>
                <span class="D">選項D</span>
                <textarea class="D-box" name="sectionD" data-ng-model="formData" required></textarea>

                <span class="answer">答案</span>
                <input name="answer" type="checkbox" class="A-Btn" value="A">
                <span class="a">A</span>
                <input name="answer" type="checkbox" class="B-Btn" value="B">
                <span class="b">B</span>
                <input name="answer" type="checkbox" class="C-Btn" value="C">
                <span class="c">C</span>
                <input name="answer" type="checkbox" class="D-Btn" value="D">
                <span class="d">D</span>

                <span class="num">空數</span>
                <input class="num-box" name="pronum" type="textarea">

                <span class="analysis">解析</span>
                <textarea class="analysis-box" data-ng-model="formData" required></textarea>

                <span class="knowledge">知識點標簽</span>
                <textarea class="knowledge-box" data-ng-model="formData" required></textarea>

                <span class="chapter">章節(jié)</span>
                <textarea class="chapter-box" data-ng-model="formData" required></textarea>

                <span class="course">課程</span>
                <textarea class="course-box" name="analysis" data-ng-model="formData" required></textarea>

                <button class="btn btn-primary submit" type="submit" onclick="return Cmd()">提交</button>
            </form>
        </div>

        <!--底部-->
        <div class="footer">
            <span class="wzsy">網站首頁</span>
            <span class="qyhz">企業(yè)合作</span>
            <span class="lxwm">聯(lián)系我們</span>
            <span class="yjfk">意見反饋</span>
            <span class="yqlj">友情鏈接</span>
            <span class="bqsy">版權所有@中北大學軟件學院</span>
            <span class="dz">地址:山西省太原市學院路3號</span>
            <span class="yzbm">郵政編碼:030051</span>
        </div>
    </div>
</div>

<div class="header">
    <div class="title-picture"></div>
    <div class="admin-picture"></div>
    <div class="admin"></div>
    <div class="sanjiao"></div>
    <div class="exit"></div>
</div>

<script>
    /**
     * @return {boolean}
     */
    $(function(){
        let ipt = document.getElementById("addchoice").getElementsByTagName("textarea");
        for (var i = 0; i < 5; i++) {
            if (ipt[i].value.length === 0) {
                alert("題目、選項為必填");
                ipt[i].focus();
                return false;
            }
        }
        let c = document.getElementById("addchoice").getElementsByClassName("num-box");
        if(c[0].value.length===0){
            alert("問題數必填");
            c[0].focus();
            return false;
        }
        submit();
        return true;
    });
    $(function(){
        let analysis = $(".analysis-box").val();
        let answer = getCheckValues();
        let chapter = $(".chapter-box").val();
        let content = $(".problem-box").val();
        let course = $(".course-box").val();
        let pronum = $(".num-box").val();
        let sectionA = $(".A-box").val();
        let sectionB = $(".B-box").val();
        let sectionC = $(".C-box").val();
        let sectionD = $(".D-box").val();
        let tips = $(".knowledge-box").val();

        this.axios.post('http://localhost:8080/choiceProblem/add', {
                analysis: analysis,
                answer: answer,
                chapter: chapter,
                content: content,
                course: course,
                pronum: pronum,
                sectionA: sectionA,
                sectionB: sectionB,
                sectionC: sectionC,
                sectionD: sectionD,
                tips: tips
            },
            {
                emulateJSON: true
            })
            .then(res => {
                alert("成");
                console.log(res);
            })
            .catch(err => {
                alert("不成");
                console.log(err);
            })
    });
</script>
</body>
</html>

為什么沒有執(zhí)行then或者catch呢,前后端完全分離,前端傳值后端返回json,接口測試無誤

回答
編輯回答
陌離殤

先不管其它問題,先這樣修改一下代碼:
方法1
<div class="centre">上面的那個script標簽整個挪到下面去

方法2
script標簽內的所有內容用如下包裹起來:

$(function() {
    //這里放那個script標簽的內容
});

直接復制我這個替換你那個:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>管理員增加選擇題</title>
    <!-- <link rel="stylesheet" href="/css/add/add_choice.css">
    <link rel="stylesheet" href="/css/add/add.css"> -->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <!-- <script src="/js/add/add_choice.js"></script> -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <link rel="stylesheet" >
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>

<body>


    <div class="centre">

        <!--導航欄-->
        <div class="menu">
            <div class="admin-picture"></div>
            <div class="indexBtn"></div>
            <div class="searchBtn"></div>
            <div class="addBtn"></div>
        </div>

        <div class="show-box">
            <div class="choice"></div>
            <div class="tiankong" onclick="addtiankong()"></div>
            <div class="code" onclick="addcode()"></div>
            <div class="jianda" onclick="addjianda()"></div>
            <div class="program" onclick="addprogram()"></div>

            <!--選擇題特有-->
            <div class="choice-line"></div>
            <div class="addchoice-box">
                <form id="addchoice">
                    <div class="title"></div>
                    <span class="problem">題目</span>
                    <textarea class="problem-box" name="content" data-ng-model="formData" required></textarea>

                    <span class="A">選項A</span>
                    <textarea class="A-box" name="sectionA" data-ng-model="formData" required></textarea>
                    <span class="B">選項B</span>
                    <textarea class="B-box" name="sectionB" data-ng-model="formData" required></textarea>
                    <span class="C">選項C</span>
                    <textarea class="C-box" name="sectionC" data-ng-model="formData" required></textarea>
                    <span class="D">選項D</span>
                    <textarea class="D-box" name="sectionD" data-ng-model="formData" required></textarea>

                    <span class="answer">答案</span>
                    <input name="answer" type="checkbox" class="A-Btn" value="A">
                    <span class="a">A</span>
                    <input name="answer" type="checkbox" class="B-Btn" value="B">
                    <span class="b">B</span>
                    <input name="answer" type="checkbox" class="C-Btn" value="C">
                    <span class="c">C</span>
                    <input name="answer" type="checkbox" class="D-Btn" value="D">
                    <span class="d">D</span>

                    <span class="num">空數</span>
                    <input class="num-box" name="pronum" type="textarea">

                    <span class="analysis">解析</span>
                    <textarea class="analysis-box" data-ng-model="formData" required></textarea>

                    <span class="knowledge">知識點標簽</span>
                    <textarea class="knowledge-box" data-ng-model="formData" required></textarea>

                    <span class="chapter">章節(jié)</span>
                    <textarea class="chapter-box" data-ng-model="formData" required></textarea>

                    <span class="course">課程</span>
                    <textarea class="course-box" name="analysis" data-ng-model="formData" required></textarea>

                    <button class="btn btn-primary submit" type="submit" id="btn">提交</button>
                </form>
            </div>

            <!--底部-->
            <div class="footer">
                <span class="wzsy">網站首頁</span>
                <span class="qyhz">企業(yè)合作</span>
                <span class="lxwm">聯(lián)系我們</span>
                <span class="yjfk">意見反饋</span>
                <span class="yqlj">友情鏈接</span>
                <span class="bqsy">版權所有@中北大學軟件學院</span>
                <span class="dz">地址:山西省太原市學院路3號</span>
                <span class="yzbm">郵政編碼:030051</span>
            </div>
        </div>
    </div>

    <div class="header">
        <div class="title-picture"></div>
        <div class="admin-picture"></div>
        <div class="admin"></div>
        <div class="sanjiao"></div>
        <div class="exit"></div>
    </div>

    <script>
        $(function() {
            $("#btn").on("click", function(e) {
                e.preventDefault();
                Cmd();
            })

            function Cmd() {
                let ipt = document.getElementById("addchoice").getElementsByTagName("textarea");
                for (var i = 0; i < 5; i++) {
                    if (ipt[i].value.length === 0) {
                        alert("題目、選項為必填");
                        ipt[i].focus();
                        return false;
                    }
                }
                let c = document.getElementById("addchoice").getElementsByClassName("num-box");
                if (c[0].value.length === 0) {
                    alert("問題數必填");
                    c[0].focus();
                    return false;
                }
                submit();
            }

            function submit() {
                let analysis = $(".analysis-box").val();
                let chapter = $(".chapter-box").val();
                let content = $(".problem-box").val();
                let course = $(".course-box").val();
                let pronum = $(".num-box").val();
                let sectionA = $(".A-box").val();
                let sectionB = $(".B-box").val();
                let sectionC = $(".C-box").val();
                let sectionD = $(".D-box").val();
                let tips = $(".knowledge-box").val();

                this.axios.post('http://localhost:8080/choiceProblem/add', {
                        analysis: analysis,
                        // answer: answer,
                        chapter: chapter,
                        content: content,
                        course: course,
                        pronum: pronum,
                        sectionA: sectionA,
                        sectionB: sectionB,
                        sectionC: sectionC,
                        sectionD: sectionD,
                        tips: tips
                    }, {
                        emulateJSON: true
                    })
                    .then(res => {
                        alert("成");
                        console.log(res);
                    })
                    .catch(err => {
                        alert("不成");
                        console.log(err);
                    })
            }
        });
    </script>
</body>
</html>
2017年6月22日 01:13
編輯回答
舊城人

這種問題你可以自己先定位,打斷點調試,很容易找到問題,一定要學會調試!

2018年1月4日 10:39