找到非法字符并在JS中删除它

时间:2016-03-12 04:17:42

标签: javascript jquery html json unicode

我有一台响应GET并发送JSON数据的服务器。该数据也包含一些html,下面的代码给了我一个Uncaught SyntaxError: Unexpected token ILLEGAL。现在我已经看到多个帖子说它可能与\ 200B有关,我认为它是..我试过this post我找不到这个角色..你能不能告诉我怎样才能找到和删除此字符?这个html来自一个SQL服务器,我有很多数据会有相同的字符串,并希望将其删除。

以下是jfiddle,当您运行时,您会收到错误。

如果我查看我的mssql数据库(当我在控制台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>

以下是this.model.toJSON()在控制台上的样子..(正文键具有我上面列出的html):

Object {id: "former-obama-religion-adviser-speaks-at-event", authorbio: "sdflkd", organization_slug: null, body: "*html shown above*", author_image_url: "", cost: ""…}

1 个答案:

答案 0 :(得分:0)

所以,根据你的评论,你会得到这样的东西:

{"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>"}

在这种情况下,当JS解包JSON响应并向您提供完整对象时,这些反斜杠应该会消失。您可以尝试在AJAX回调/处理程序中放置一个断点,并检查该对象的内容及其值。

但是,如果您尝试从响应文本流中复制粘贴此代码(例如从网络面板或直接从浏览器的地址栏加载请求),它将无法正常工作,因为这些转义字符不应该在那里。它们仅在字符串文字中合法(即,当用引号括起时)。