Javascript 在JS中找到非法字符并将其删除

Javascript 在JS中找到非法字符并将其删除,javascript,jquery,html,json,unicode,Javascript,Jquery,Html,Json,Unicode,我有一个服务器,它响应GET和send JSON数据。该数据还包含一些html,下面的代码片段为我提供了一个未捕获的SyntaxError:Unexpected token invalign。现在我已经看到多篇帖子说它可能与\200B有关,我想是的。。我试过了,但找不到这个角色。。你能告诉我如何找到并删除这个角色吗?这个html来自一个SQL server,我有很多数据都有相同的字符串,我想删除它 下面是当您运行时,您得到的错误信息 如果我查看我的mssql数据库(当我在console中打印th

我有一个服务器,它响应GET和send JSON数据。该数据还包含一些html,下面的代码片段为我提供了一个
未捕获的SyntaxError:Unexpected token invalign
。现在我已经看到多篇帖子说它可能与\200B有关,我想是的。。我试过了,但找不到这个角色。。你能告诉我如何找到并删除这个角色吗?这个html来自一个SQL server,我有很多数据都有相同的字符串,我想删除它

下面是当您运行时,您得到的错误信息

如果我查看我的mssql数据库(当我在console中打印this.model.toJSON().body时,我会看到以下内容:

<p>Lorem Ipsum</p>
<p>Lorem Ipsum</p>

<strong>Tweet this article out</strong></span><br><br>

<a href="https://twitter.com/share" class="twitter-share-button" data-text="I 25 by @oberz" data-via="Atdsfm" data-size="large">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?\'http\':\'https\';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+\'://platform.twitter.com/widgets.js\';fjs.parentNode.insertBefore(js,fjs);}}(document, \'script\', \'twitter-wjs\');</script>
<p> More html stuff</p>

因此,根据您的评论,您得到的反馈如下:

{"script":"<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?\'http\':\'https\';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+\'://platform.twitter.com/widgets.js\';fjs.parentNode.insertBefore(js,fjs);}}(document, \'script\', \'twitter-wjs\');</script>"}
{“script”:“!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http://.test(d.location)\'http\':\'https\';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+\'://platform.twitter.com/widgets.js\';fjs.parentNode.insertBefore(js,fjs);(document,\'script\'twitter\'wjs);'
在这种情况下,当JS解压JSON响应并递给您一个完整的对象时,这些反斜杠应该消失。您可以尝试在AJAX回调/处理程序中放置断点,并检查该对象的内容及其值


但是,如果您试图从响应文本流(例如从网络面板或直接从浏览器的地址栏加载请求)复制粘贴此代码,则不会起作用,因为这些转义字符不应存在。它们仅在字符串文本中合法(即,当被引号包围时)

Twitter小部件代码与您的问题有什么关系?我相信U200B就存在于这段代码中。。如果我删除了该代码,就不会得到错误。我更新了问题以使其更清楚。您的代码中充满了不属于您的反斜杠。因此,您收到了一个JSON响应,其中包含作为字符串值的
?那些转义字符在字符串插值中幸存了下来?或者您只是从网络面板的响应中复制了相关的代码片段?是的,我收到了一个JSON响应,其中包括。。。作为字符串值。这段代码是我在控制台上像这样打印出来后从网络窗格中得到的。。这个.model.toJSON().body。当我检查此代码段所在的数据库时,此代码段看起来完全相同。如果我陈述错误,我深表歉意,但我更新了我的问题以提供更多数据。我认为我的答案仍然是您需要的。问题在于,您正试图将转义字符串手动注入到引号打断内容的上下文中,而不是让JS自己做事情。请记住,转义字符是跨上下文携带字符串值所必需的,因此,如果您看到的内容包含转义字符,如
\n
\“
,则它们仅在将文本作为字符串从一个位置移动到另一个位置时才是必需的。一旦使用
JSON.parse()
(或者让事情由您使用的AJAX库决定),您返回的对象将不再具有这些转义字符。您的回答让我看到了真正的问题-存储在sql db中的数据被转义了..可能是错误的
{"script":"<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?\'http\':\'https\';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+\'://platform.twitter.com/widgets.js\';fjs.parentNode.insertBefore(js,fjs);}}(document, \'script\', \'twitter-wjs\');</script>"}