从获取对数组

时间:2015-10-28 19:19:18

标签: javascript jquery

我有一个文本框我想要一个自动填充功能,但它是动态的,因此自动填充中的数据必须来自服务器。我已经把所有东西都搞定了我想我会使用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;

我如何将其解析为可用作我的盒子源的数组?

2 个答案:

答案 0 :(得分:0)

您可以让jQuery为您完成工作:

var pre = $(data);

只获取<pre>元素及其上下文。 <{1}}和html将被忽略。

body

获取内容(数组字符串)。

var pretext = pre.text();

将字符串解析为数组(如果与上面的示例一样,它是有效的JSON)。

&#13;
&#13;
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;
&#13;
&#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)