首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JS 中 window.location.reload() 失效原因:form submit 頁面跳轉導致後續代碼不執行

     編輯:程式設計疑難解答

問題代碼

function uploadExcel() {
    var path = document.getElementById("upload").value;
    path = getFileName(path);
    var action = $("#questionTypesManage").attr("action");
    $("#questionTypesManage").attr("action", action + "?path=" + path);
    $("#questionTypesManage").submit();
    window.location.reload();  // 這行永遠不會執行
}

根本原因

form.submit() 會觸發瀏覽器導航到 action 指定的 URL,當前頁面卸載,後續 JS 代碼(包括 reload())不再執行。

解決方案:改用 AJAX 非同步上傳

function uploadExcel() {
    var formData = new FormData();
    formData.append('file', $('#upload')[0].files[0]);
    
    $.ajax({
        url: '/PublishController/doUpdate',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        success: function(res) {
            alert(res.msg);  // 顯示後端返回提示
            window.location.reload();  // 這時 reload 生效
        },
        error: function() {
            alert('上傳失敗');
        }
    });
}

關鍵點總結

  • 同步 submit = 頁面跳轉,後續代碼失效。
  • AJAX = 非同步,頁面不跳轉,可根據返回值決定是否重載或局部更新。
  • 檔案上傳需用 FormData,設定 processData: false, contentType: false。

錯誤示例截圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved