我正在使用google books api进行搜索
" https://www.googleapis.com/books/v1/volumes?q=&#34 +文本
使用时:
book.innerHTML = '<input type="button" data-text="' data.items[i].volumeInfo.description +'">';
我的一些结果不能很好地发挥作用,我发现一些描述在开头就有引用,即
&#34; \&#34;就在那里,挂在学校上方的天空中:绿色的骷髅头上有一条毒蛇的舌头,只要他们进入建筑物就会留下食死者的痕迹......无论他们在哪里谋杀了...... \&#34;当邓布利多&#34;
如何避免此错误?
答案 0 :(得分:0)
这不是错误。 Google返回的数据采用JSON格式。
从JSON.org我们看到JSON使用双引号,但不使用单引号作为标记语法。转义的双引号 - 看起来像这样:\"
旨在防止字符串过早关闭。
当返回的数据通过JSON parse()命令运行时,它会将“string-ified”数据转换为JavaScript对象。解析后,您可以使用点.
表示法访问属性。括号[variable]
表示法。
尝试这样的事情:
var searchUrl = 'https://www.googleapis.com/books/v1/volumes?q=' + text;
var response = useYourAjaxMethodHere(searchUrl);
response = JSON.parse(response);
console.log(response.items[0].volumeInfo.description);
答案 1 :(得分:-1)
而不是指定你不喜欢的字符串中的特殊字符,你可以期待你想要的东西。例如,如果您的字符串必须只包含字母(a到z和A到Z),数字,空格和点,那么以下内容对您有用
var str = data.items[i].volumeInfo.description
str = str.replace(/[^a-zA-Z0-9 \.,]/g, "");
<强>解释强>
[a-z]表示来自a-z
的任何字符[a-zA-Z]表示来自a-z和A-Z
的任何字符[a-zA-Z0-9]表示来自a-z和A-Z以及0-9的任何字符
[a-zA-Z0-9]表示来自a-z和A-Z以及0-9和白色空格的任何字符
[a-zA-Z0-9 \。]表示来自a-z和A-Z以及0-9和白色空格和点的任何字符
如果您想允许更多字符,只需将它们添加到逻辑中即可。例如,如果你想允许下划线'_',那么你的新正则表达式将是
str.replace(/[^a-zA-Z0-9 \._]/g, "");