我有一个文本框,我想要自动填充功能,但它是动态的,因此自动填充中的数据必须来自服务器。我已经准备好了一切,我想我会使用 jquery 库中的自动填充功能,但问题是我无法正确地将 get 中的文本加载为数组...
这是代码
jQuery(".search-form-box").on("input", function() {
var box = $(this);
var min = box.data("autocomplete-min");
var searchLink = box.data("autocomplete-url");
var autocomplete;
if (box.val().length >= min) {
$.get(searchLink + box.val(), function(data) {
autocomplete = [ data.substring(data.indexOf("[") + 1, data.indexOf("]")) ];
box.autocomplete({
source : autocomplete
});
});
}
});
现在获取响应返回一个 html 格式的网页,所以我解析了它......这就是 HTML
<html>
<head></head>
<body>
<pre> ["Software","Hardware","Malware"]</pre>
</body>
</html>
所以我用 [ 和 ] 解析了它,如你所见。获取内部“软件”、“硬件”、“恶意软件”
我如何将其解析为一个可以用作我的盒子源的数组?
最佳答案
您可以让 jQuery 为您完成工作:
var pre = $(data);
仅获取 <pre>
元素及其上下文。 html
和body
被忽略。
var pretext = pre.text();
获取内容(数组字符串)。
var arr = JSON.parse(pretext);
将字符串解析为数组(如果像上面的示例一样,它是有效的 JSON)。
var data = '<html><head></head><body><pre> ["Software","Hardware","Malware"]</pre></body></html>';
var pre = $(data);
var pretext = pre.text();
var arr = JSON.parse(pretext);
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
关于javascript - 将字符串从获取响应更改为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33399748/