[英]Javascript: How to handle syntaxError in response string parsing
在我的 HTML 文件中,我有一行(下方)通過 WiFi 從設備獲取響應並使數據可用於我的 JavaScript,它運行良好,除非響應文本中出現錯誤並停止。
<script type="text/javascript" src="http://192.168.4.1/"></script>
響應是一個表示 JavaScript 變量的文本字符串,它有時會被破壞並引發錯誤。
例子:
Uncaught SyntaxError: invalid assignment left-hand side 192.168.4.1:14:3
SyntaxError: unterminated string literal 192.168.4.1:3:8
我需要一個解決方案來捕獲解析接收到的字符串的錯誤,以便我可以再次運行上述語句以獲取新字符串。
謝謝
下面是響應字符串的圖片(JS變量。)
問題是一旦加載腳本,其內容可能會出現錯誤,我希望避免因此而出現錯誤。
更新#1。 使用 XMLHttpRequest 獲取數據
<script>
const Http = new XMLHttpRequest();
const url='http://192.168.4.1/';
Http.open("GET", url);
// Http.setRequestHeader('Access-Control-Allow-Origin', '*');
Http.send();
ReturnVar = Http.responseText
Http.onreadystatechange = (e) => { console.log(Http.responseText) }
</script>
以下是瀏覽器控制台中的詳細信息,上面運行腳本后的標題。
GET
scheme http
host 192.168.4.1
filename /
Address 192.168.4.1:80
Transferred 1.82 KB (1.82 KB size
Request headers (278B)
GET /
Host: 192.168.4.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: null
DNT: 1
Connection: keep-alive
Cache-Control: max-age=0
您有一個腳本標簽,它正在加載腳本並評估其內容。 您需要以編程方式修改它,因此您需要
您只需要以編程方式下載文件的內容,而不是作為script
的src
。
在繼續之前,請閱讀: https : //javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/
現在,您知道eval
並不完全流行 - 確實如此 - 如果您仍然確定需要按原樣運行腳本,請研究eval並使其按原樣運行
錯誤示例:
eval("'");
try-catch 中的錯誤示例:
try {eval("'")} catch (ex) {}
您可以使用ajax調用地址,然后如果響應是在json中,您可以輕松使用它,但是如果它是某種腳本或其他東西,請將其包裝在腳本標記中並將其附加到正文中。 假設result
是您從 ajax 請求中得到的,並且您的項目中有 jQuery:
$('body').append('<script>'+result+'</script>')
在這種情況下,您可以將代碼包裝在 try catch 中並處理錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.