LINUX.ORG.RU

Не работает javascript код

 ,


0

2
Index.html имеет этот код

function uploadData() {
    const y12 = parseFloat(document.getElementById("U2").value);
    const y11 = parseFloat(document.getElementById("U1").value);
    const x12 = parseFloat(document.getElementById("n2").value);
    const x11 = parseFloat(document.getElementById("n1").value);
    const bv = parseFloat(document.getElementById("b").value);

    fetch('/init', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ y12, y11, x12, x11, bv })
    })
    .then(response => response.json())
    .then(data => {
        console.log(data.array);
    })
    .catch(error => {
        console.error('Error:', error);
    });
}

item.js вот этот код

let y12, y11, x12, x11, bv;
……………...
app.post('/init', (req, res) => {
    //const { y12, y11, x12, x11, bv = req.body;
 console.log('Полный req.body:', req.body); // что приходит на сервер

    const y12 = req.body.y12;
    const y11 = req.body.y11;
    const x12 = req.body.x12;
    const x11 = req.body.x11;
    const bv = req.body.bv;

    console.log('После присваивания:', { y12, y11, x12, x11, bv });
});

уже не соображаю. Почему y12, y11, x12, x11, bv undefined в item.js? Нашел ошибку в button теперь в консоли

$ node item.js
Server is running on port 3000
Полный req.body: { y12: 12.3, y11: 4.02, x12: 3.03, x11: 0.9, bv: 0.526 }
После присваивания: { y12: 12.3, y11: 4.02, x12: 3.03, x11: 0.9, bv: 0.526 }
One or more variables are undefined



Последнее исправление: saufesma (всего исправлений: 2)

Ты пытаешься сделать невалидный json. Странно почему ты это не видишь в DevTools, или хотя бы тебе ide не указала на ошибку.

itn ★★★
()
Ответ на: комментарий от itn

В нашей)

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

const a = 1;

// это эквивалентные формы записи
const b = {a: a};
const c = {a};

hippi90 ★★★★★
()

Я ничего не понял. Попробуй изложить свой вопрос чётче. В виде фрагмента кода, который я смогу себе скопировать, запустить и воспроизвести то, что тебе не понятно.

vbr ★★★★★
()
После присваивания: { y12: 12.3, y11: 4.02, x12: 3.03, x11: 0.9, bv: 0.526 }
One or more variables are undefined

Первая строка означает, что сервер получил значения. А вот сообщение «One or more variables are undefined» мы не знаем кто выводит. Показывай нам тот код.

UPDATE

А, кажется понял. У тебя после вывода первого сообщения функция-колбек заканчивается, а тебе нужно прямо из этой функции вызывать свои обработчики.

static_lab ★★★★★
()
Последнее исправление: static_lab (всего исправлений: 1)
Ответ на: комментарий от static_lab

Код чуть попозже отправлю. Комп далековато. Вот мысль, выхлоп app.post есть

 { y12: 12.3, y11: 4.02, x12: 3.03, x11: 0.9, bv: 0.526 } 
но ведь это не то же самое как
const { y12=12.3, y11=4.02, x12=3.03, x11=0.9, bv=0.526 }
? Может этот выхлоп обработать как-то ещё?

saufesma
() автор топика
Последнее исправление: saufesma (всего исправлений: 1)
Ответ на: комментарий от static_lab

А, кажется понял. У тебя после вывода первого сообщения функция-колбек заканчивается, а тебе нужно прямо из этой функции вызывать свои обработчики.

По логике не могу этого делать, получается не то , что нужно.

saufesma
() автор топика
Ответ на: комментарий от static_lab

Думаю это будет так

const data = { y12: 12.3, y11: 4.02, x12: 3.03, x11: 0.9, bv: 0.526 };

// Определение глобального контекста (window для браузера, global для Node.js)
const globalObject = typeof window !== 'undefined' ? window : global;

Object.entries(data).forEach(([key, value]) => {
  globalObject[key] = value;
});

// Проверка: теперь переменные доступны глобально
console.log(y12); // 12.3
console.log(bv);  // 0.526

saufesma
() автор топика
Ответ на: комментарий от saufesma

но ведь это не то же самое как

const { y12=12.3, y11=4.02, x12=3.03, x11=0.9, bv=0.526 }

Вот вообще тебя не понял. Эта строка абсолютно не валидная.

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

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

Эта строка абсолютно не валидная.

Да это просто мысль. Я просто не помню умные слова по программированию. А хотел сказать, что объект транслировать в переменные, так надеюсь понятно. А код самому не нравится. Надо переделать.

saufesma
() автор топика
Ответ на: комментарий от static_lab

С тобой поболтаю, что вспомню, что подучу, а то всплыл из других дел и год как программированием не занимался.

saufesma
() автор топика
function uploadData() {
     const y12 = parseFloat(document.getElementById("U2").value);
     const y11 = parseFloat(document.getElementById("U1").value);
     const x12 = parseFloat(document.getElementById("n2").value);
     const x11 = parseFloat(document.getElementById("n1").value);
     const bv = parseFloat(document.getElementById("b").value);

В функции uploadData создаешь локальные переменные и присваиваешь им значения

В item.js ты создаешь другие переменные, которые не связаны с переменными в uploadData

let y12, y11, x12, x11, bv;

Почитай что такое пространства имен.

dicos ★★★
()
Последнее исправление: dicos (всего исправлений: 1)
Ответ на: комментарий от saufesma

app.post(‘/init’, (req, res) => { //const { y12, y11, x12, x11, bv = req.body; console.log(‘Полный req.body:’, req.body); // что приходит на сервер

const y12 = req.body.y12;
const y11 = req.body.y11;
const x12 = req.body.x12;
const x11 = req.body.x11;
const bv = req.body.bv;

console.log('После присваивания:', { y12, y11, x12, x11, bv });

});

убери здесь const для каждой и должно заработать неужели чат гопота такое не подсказывает?

kodoi
()
Ответ на: комментарий от static_lab

Если только тебя

Да ты просто герой невидимого фронта. Какая гадость!

saufesma
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария