Эммануэль, я должен предположить, что load_json_data
является асинхронным вызовом и возвращает promise
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).
Вам придется подождать обещание resolve
и только после read
data
его предоставляется в response
. Мне придется принять здесь структуру данных, но давайте попробуем создать что-то с теми предположениями, которые, как я верю, помогут вам понять, и вы сможете исправить свою проблему.
Я также буду использовать синтаксис чтобы сделать это немного легче для чтения (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function), вот оно:
$(document).on('change', '#kunde', async function () {
var kunde_id = $(this).val();
if (kunde_id != '')
{
var responseData = await load_json_data('grund', kunde_id);
var count = responseData.value
for (var i = 0; i < count; i++) {
$('#grund').html('<option value="">Bitte wähle</option>');
}
}
else
{
$('#grund').html('<option value="">Bitte wähle</option>');
}
Вы заметите использование префикса async
перед function ()
, а также ключевое слово await
, если этот синтаксис вам незнаком, не беспокойтесь! Важно понять процедуру, в которой вы должны сделать звонок и ждать, и только после того, как что-то сделаете с ответом!
Используйте первый предоставленный мной URL, чтобы сделать это без синтаксического сахара в моем пример. Где вы будете делать что-то вроде:
load_json_data(...).then(...)
Три точки ...
- это просто заполнитель, так как вам нужно выполнить их самостоятельно, просто следуйте документации;)
Примечания: responseData.value
это просто пример, я предположил структуру данных, чтобы помочь вам понять, что вам нужно получить доступ к вашей конкретной собственности. Вы можете проверить тело ответа и найти нужное свойство, например, сделать console.log (responseData).