javascript - 将字符串从获取响应更改为数组

标签 javascript jquery

我有一个文本框,我想要自动填充功能,但它是动态的,因此自动填充中的数据必须来自服务器。我已经准备好了一切,我想我会使用 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>元素及其上下文。 htmlbody被忽略。

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/

相关文章:

javascript - 有没有更简洁的方法来解析我的 HTML 数据?

javascript - 具有客户端 + 服务器端自定义验证的用户控制;选择了错误的客户端验证

javascript - 我怎样才能得到数组的真实计数?

javascript - 在 Dash.js 中使用 JavaScript 前进到下一个视频

javascript - 服务器是否有一些特殊设置来运行 jQuery?

javascript - 2 列列表行 CSS JS 上的高度相同

javascript - 使用 Javascript 启动新窗口并填写表单值

javascript - 查找具有特定数据属性的所有元素(无论值如何)

javascript - 动态设置元素的高度和宽度

javascript - Yii CJuiAutoComplete - 在 php 中将用户选择的值存储到数据库的最简单方法?