首页 > 解决方案 > Javascript:如何在响应字符串解析中处理 syntaxError

问题描述

在我的 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

标签: javascriptjsonparsingsyntax-error

解决方案


您有一个脚本标签,它正在加载脚本并评估其内容。您需要以编程方式修改它,因此您需要

以文本形式获取文件

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

您只需要以编程方式下载文件的内容,而不是src作为script.

评估它

在继续之前,请阅读以下内容:https ://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/

现在,您知道这eval并不完全流行 - 并且正确地如此 - 如果您仍然确定需要按原样运行脚本,请研究eval并使其像以前一样工作

将其封装成 try-catch

错误示例:

eval("'");

try-catch 中的错误示例:

try {eval("'")} catch (ex) {}

推荐阅读