Это следует из моего предыдущего вопроса о том, что Visual Studio показывает "" вместо ".

Когда я запускаю приведенный ниже код, он создает массив javascript и возвращается как res[0], как показано ниже:

["Name","Name","Name"]

В визуальной студии он возвращает это:

"["Name","Name","Name"]"

Когда я запускаю код, эта часть все еще показывает окружающие речевые метки (данные автозаполнения):

autocomplete(document.getElementById("rd-search-form-input"), autocompletedata );

Это приводит к тому, что код не работает. Когда я вручную удаляю окружающие двойные кавычки, все работает нормально.

Я попытался удалить начальную и конечную часть строки, но он просто удаляет [ и ], что указывает на то, что строка вообще не окружена двойными кавычками. Я также попытался удалить все двойные кавычки, но безрезультатно.

Кто-нибудь может объяснить, что происходит не так?

var urlMethod = "/ajax.aspx/GetTeamMemberNamesList";
var params = new Object();
var result;

params.TeamID = 123;

result = SendAjaxSingleValue(urlMethod, params);
var res = result.d.split("|");

var autocompletedata = res[0];

autocompletedata.replace(/['"]+/g, '')

autocomplete(document.getElementById("rd-search-form-input"), autocompletedata );
1
Ben Williams 18 Сен 2018 в 14:41

2 ответа

Лучший ответ

Чтобы прояснить решение из OP, вызов ajax возвращает не сам массив, а строку JSON, как это всегда бывает при получении данных с веб-сервера - поэтому res[0] возвращается как ["Name","Name","Name"].

Следовательно, чтобы преобразовать текст ответа в фактический массив, требуется JSON.parse для выполнения преобразования.

2
DKyleo 18 Сен 2018 в 14:01

Что ж, это раздражало - это устранило мою проблему:

autocomplete(document.getElementById("rd-search-form-input"), JSON.parse(autocompletedata));
0
Tetsuya Yamamoto 19 Сен 2018 в 01:59