我有一个文本框我想要一个自动填充功能,但它是动态的,因此自动填充中的数据必须来自服务器。我已经把所有东西都搞定了我想我会使用jquery库中的自动填充功能,但问题是我无法正确加载我作为数组获取的文本...
这是代码
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
});
});
}
});
现在get响应在html中返回一个网页,所以我解析了它......这就是HTML的内容
<html>
<head></head>
<body>
<pre> ["Software","Hardware","Malware"]</pre>
</body>
</html>
所以我通过[和]解析它,你可以看到。获取内部&#34;软件&#34;,&#34;硬件&#34;,&#34;恶意软件&#34;
我如何将其解析为可用作我的盒子源的数组?
答案 0 :(得分:0)
您可以让jQuery为您完成工作:
var pre = $(data);
只获取<pre>
元素及其上下文。 <{1}}和html
将被忽略。
body
获取内容(数组字符串)。
var pretext = pre.text();
将字符串解析为数组(如果与上面的示例一样,它是有效的JSON)。
var arr = JSON.parse(pretext);
&#13;
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);
&#13;
答案 1 :(得分:0)
var str = '<html><head>\
</head>\
<body>\
<pre> ["Software","Hardware","Malware"]</pre>\
\
</body></html>\
';
var arr = JSON.parse(
str.replace(/[^[]*/ , '').replace(/(])(.*)/ , '$1')
)
document.body.innerHTML = JSON.stringify(arr)