Проблема в том, что любая последовательность </
, известная как ETAGO, завершает элемент CDATA, такой как <script>
. Вы можете получить с помощью </
в браузерах, но не </script
.
Самый простой обходной путь - разбить последовательность </
с помощью обратной косой черты:
sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '<\/option>');
Однако в этой строке все еще есть проблемы, потому что вы не экранируете HTML от значений id
и nombre
. Если они могут содержать <
, &
или "
, вы только что создали себе уязвимость XSS на стороне клиента!
Так что либо HTML-экранирование ваших текстовых значений перед помещением их в строки, либо, возможно, проще, просто используйте стандартный DOM:
sel.append (новая опция (data [i] .nombre, data [i] .id));