总有一天你的谜底会解开 2022-03-09 13:40 采纳率: 77.4%
浏览 37
已结题

js函数中变量未取得值就返回

 <script type="text/javascript">
        let xx;
         function updateData() {
            let x;
            x=receiveData();
            console.log('收到的x的值为:'+x);
            // 添加了多个新行并加入数据
            useData(x);
        }
        function receiveData() {
            $.get("/ShangCheng_war_exploded/data", function (data) {   //获取成功执行的方法
                window.alert('接受到异步请求数据:' + JSON.stringify(data))  //弹窗展示数据
                xx = data;
            });
            alert(xx);
            return xx;
        }
        function useData(x) {
            let tbody = document.getElementById("tbody")
            for (let a = 0; a < x.length; a++) {
                let row = getRow(x[a]);
                // alert(x[a].length);
                tbody.append(row);
            }
        }
        function getRow(w) {
            let trow = document.createElement("tr");
            let input = document.createElement("input");
            input.setAttribute("type", "checkbox");
            trow.append(input);
            let hang = ["name", "author", "store", "money", "date"];
            for (let qq = 0; qq < hang.length; qq++) {
                let td = document.createElement("td");
                td.innerHTML = w[hang[qq]];
                trow.appendChild(td);
            }
            return trow;
        }
    </script>

问题背景:
第一次调用receiveData()函数时,xx总是打印的unfined然后直接返回,需要再调用一次该函数才能使xx得到get函数里的数据,为什么啊?

  • 写回答

3条回答 默认 最新

  • 关注

    $.ajaxSettings.async = false;
    添加上面这一句。
    让 ajax请求变成同步的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月9日
  • 创建了问题 3月9日