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

Change string from get response to array

本文关键字:数组 响应 字符串 获取      更新时间:2023-09-26

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

现在 get 响应返回一个 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>

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)