亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Ajax Unexpected token < error on 404 而不是普通的 ajax

Ajax Unexpected token < error on 404 而不是普通的 ajax

智慧大石 2022-06-16 16:55:44
使用 jQuery Ajax 函數時,在指定錯誤和成功處理程序時,您會期望指定的錯誤處理程序函數捕獲無效文件和 404 錯誤,但由于某種原因我的代碼沒有。代碼:// using jQuery 3.4.1// this code has been taken from a larger function, but the issue can be replicated by pasting// the following code into the JS Console.var scriptPath = 'http://mywebserver.localhost/application/invalid.js';jQuery.ajax( {    async: false,    type: 'GET',    url: scriptPath,    crossOrigin: false,    data: null,    global: false,    cache: true,    success: function() {        debugger;        // do some stuff        onResult();    },    error: function( jqXHR, textStatus, errorThrown ) {        debugger;        Lib.showNetworkErrorAlert( jqXHR, textStatus, errorThrown );    },    dataType: 'script'} );這導致:未捕獲的錯誤來自:~未知~錯誤:未捕獲的語法錯誤:意外的令牌“<”在: http://mywebserver.localhost/ ........ 行:1澄清一下,我已經查看了那里的 SO 問題,但我發現的問題往往集中在錯誤的原因上。我知道錯誤'Unexpected token < in ...'是什么,它只是JS試圖將目標解析為JS,而是給出了404錯誤html文件,所以第一個標簽中的<觸發了錯誤。我試圖找出和理解的是為什么會出現此錯誤而不是指定的正常錯誤處理程序。至少我會認為將 dataType 設置為 script 會使其實現更好的錯誤,嘿,這是一個 HTML 404 錯誤文件,而不是腳本。非常感謝任何幫助和見解。更新:這是 Dev Tools 中的 Network 選項卡,顯示它正在返回 404。
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

事實證明,這實際上是 jQuery 中的一個錯誤——而不是我錯誤地使用它——早在 2018 年就報告了該錯誤,但該修復僅指定包含在 jQuery 中4.0.0。

然而,這可能還需要一段時間,所以我現在再次報告了這個錯誤以包含在更多當前版本中,管理員已經討論了這個問題并決定將它作為一個修復程序包含在3.5.0.

錯誤的解釋

通常,使用該dataType:script屬性會告訴 jQuery 的 Ajax 函數“我正在提供一個腳本,請在 JavaScript 加載后執行它”。

問題是無論響應狀態代碼如何,文件(或返回的任何內容)都將被評估為 JavaScript(即使不是 JavaScript),如果 404 錯誤返回 404 錯誤 HTML 頁面,這當然會導致錯誤。

可以在Github上看到解決方案(只是為了不在這里解釋錯誤),但簡單來說,它不應該再為不成功的 HTTP 響應執行腳本。


查看完整回答
反對 回復 2022-06-16
  • 1 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號