Почему JS не возвращает значение? undefined
Есть 2 скрипта для обновления двух списков. Второй скрипт работает, но данные не передает в контроллер. Первый неправильно возвращает значения и выдает :"undefined" Первый скрипт: '''
<script type="text/javascript">
$(document).ready(function () {
$("#carbrands").change(function () {
console.log("pehla andar");
$("#carmodels").empty();
$.ajax({
type: 'POST',
url: '@Url.Action("GetModels")',
dataType: 'json',
data: { id: $("#carbrands").val() },
success: function (mems) {
console.log("wich ayaeee");
$.each(mems, function (i, member) {
$("#carmodels").append('<option value="'
+ member.Value + '">'
+ member.Text + '</option>');
});
},
error: function (ex) {
alert('Failed to retrieve states.' + ex);
}
});
return false;
})
});
</script>
}
''' Второй скрипт: '''
<script type="text/javascript">
$(function () {
$('#carbrands').change(function()
{
var id = $(this).val();
$.ajax({
type: 'GET',
url: '@Url.Action("GetItems")/' + id,
success: function (data) {
$('#carmodels').replaceWith(data);
}
});
});
})
</script>
'''
Кто разбирается в JS, знаете в чем дело?
Ответы (1 шт):
Each создает функцию, старайся всегда перебирать через for(){}
var, function и callbacks морально и нет - устарели
(По колбекам есчо: если у тебя в коде полно строк с +5 табами, значит пора пылесосить песок)
Обычно в js используют одинарные кавычки для строк
Пробуй сначала выводить в консоль, потом уже вставлять текст в дом
Вот вкусная статья к прочтению
Рекомендую также использовать расширение для быстрых тестов своего кода (корпсы главное солблюдай)
Вот код асинхронного запроса:
const afetch=(_url)=>{
return new Promise((resolve)=>{
$.ajax({
url: _url,
type: 'GET',
data: {},
async: true,
}).done((r)=>{
if(!r)r = false;
resolve(r);
}).catch((e)=>{
console.log(e.status, e.responseText, e);
resolve(false);
});
});
};
(async()=>{
let r = await afetch('http://www.calorizator.ru/analyzer/recipe/');
// code, any job with response
console.log('response', r);
})();
Я знаю про await ajax, но работает он раз через раз, у меня