javascript - 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
解决方案
您有一个脚本标签,它正在加载脚本并评估其内容。您需要以编程方式修改它,因此您需要
以文本形式获取文件
您只需要以编程方式下载文件的内容,而不是src
作为script
.
评估它
在继续之前,请阅读以下内容:https ://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/
现在,您知道这eval
并不完全流行 - 并且正确地如此 - 如果您仍然确定需要按原样运行脚本,请研究eval并使其像以前一样工作
将其封装成 try-catch
错误示例:
eval("'");
try-catch 中的错误示例:
try {eval("'")} catch (ex) {}
推荐阅读
- codeigniter - 在 codeigniter 中上传图片时显示错误
- java - 从 JSP 页面获取复选框值
- angular - Angular 2试图等到订阅完成在执行代码之前
- haskell - 数据类型中的相同变量名
- python - 如何在 django 中使用 serializers.serialize 序列化具有特定字段的对象?
- php - 使用 PHP 表单编辑数据库
- c++ - C++ 识别 X 按钮和滚轮方向
- python - 在启动 ec2 实例时创建一个文件
- c# - 编译基于 C# 的 Windows(WinForms 应用程序)应用程序以在 Mac OS High Sierra 或 Mojave 上运行
- python - 如何按组获取多组字符串中每个字符串的频率