簡體   English   中英

Javascript:如何處理響應字符串解析中的語法錯誤

[英]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

您有一個腳本標簽,它正在加載腳本並評估其內容。 您需要以編程方式修改它,因此您需要

以文本形式獲取文件

https://www.freecodecamp.org/news/here-is-the-most-popular-ways-to-make-an-http-request-in-javascript-954ce8c95aaa/

您只需要以編程方式下載文件的內容,而不是作為scriptsrc

評估一下

在繼續之前,請閱讀: https : //javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/

現在,您知道eval並不完全流行 - 確實如此 - 如果您仍然確定需要按原樣運行腳本,請研究eval並使其按原樣運行

封裝成try-catch

錯誤示例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM