DmitrMakeev commited on
Commit
1c19879
·
verified ·
1 Parent(s): ab172ac

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. nutri_call.html +43 -39
nutri_call.html CHANGED
@@ -326,17 +326,18 @@
326
 
327
  <script>
328
  document.getElementById('calculate-btn').addEventListener('click', function() {
329
- // 1. Функция для безопасного получения числового значения
330
  const getValue = (id) => {
331
  const element = document.getElementById(id);
332
- const value = parseFloat(element.value);
333
- if (isNaN(value)) {
334
- console.error(Ошибка: поле ${id} содержит не число! Значение:, element.value);
335
  return 0;
336
  }
337
- return value;
 
338
  };
339
- // 2. Формируем данные в ТОЧНОМ формате для сервера
 
340
  const requestData = {
341
  fertilizerConstants: {
342
  "Кальциевая селитра": {
@@ -375,54 +376,57 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
375
  'liters': parseInt(document.getElementById('liters-input').value) || 1
376
  }
377
  };
378
- // 3. Выводим данные для проверки
379
- console.log("Данные для отправки на сервер:");
380
- console.log(JSON.stringify(requestData, null, 2));
381
- // 4. Проверка данных
382
- let hasErrors = false;
383
  const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
384
  "Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
385
 
 
 
 
386
  for (const fert of requiredFertilizers) {
387
  if (!requestData.fertilizerConstants[fert]) {
388
- console.error(Отсутствует удобрение: ${fert});
389
  hasErrors = true;
390
  }
391
  }
392
- const requiredElements = ['P', 'K', 'Mg', 'Ca', 'S', 'N (NO3-)', 'N (NH4+)'];
393
- for (const elem of requiredElements) {
394
- if (isNaN(requestData.profileSettings[elem])) {
395
- console.error(Некорректное значение для элемента ${elem});
 
 
396
  hasErrors = true;
397
  }
398
  }
 
399
  if (hasErrors) {
400
- console.error("Обнаружены ошибки в данных! Отправка отменена.");
401
  return;
402
  }
403
- // 5. Отправка данных на сервер
404
- console.log("Отправка данных на сервер...");
405
- const xhr = new XMLHttpRequest();
406
- xhr.open("POST", "/calculation", true);
407
- xhr.setRequestHeader("Content-Type", "application/json");
408
-
409
- xhr.onreadystatechange = function() {
410
- if (xhr.readyState === 4) {
411
- console.log("Статус ответа:", xhr.status);
412
- if (xhr.status === 200) {
413
- console.log("Успешный ответ от сервера:", JSON.parse(xhr.responseText));
414
- } else {
415
- console.error("Ошибка сервера:", xhr.status, xhr.statusText);
416
- console.error("Текст ошибки:", xhr.responseText);
417
- }
418
  }
419
- };
420
-
421
- xhr.onerror = function() {
422
- console.error("Ошибка сети при отправке запроса");
423
- };
424
-
425
- xhr.send(JSON.stringify(requestData));
 
 
 
426
  });
427
  </script>
428
 
 
326
 
327
  <script>
328
  document.getElementById('calculate-btn').addEventListener('click', function() {
329
+ // 1. Улучшенная функция для безопасного получения числового значения
330
  const getValue = (id) => {
331
  const element = document.getElementById(id);
332
+ if (!element) {
333
+ console.error(`Элемент с ID ${id} не найден!`);
 
334
  return 0;
335
  }
336
+ const value = parseFloat(element.value);
337
+ return isNaN(value) ? 0 : value;
338
  };
339
+
340
+ // 2. Формируем данные для сервера
341
  const requestData = {
342
  fertilizerConstants: {
343
  "Кальциевая селитра": {
 
376
  'liters': parseInt(document.getElementById('liters-input').value) || 1
377
  }
378
  };
379
+
380
+ // 3. Проверка данных
 
 
 
381
  const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
382
  "Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
383
 
384
+ let hasErrors = false;
385
+
386
+ // Проверяем наличие всех удобрений
387
  for (const fert of requiredFertilizers) {
388
  if (!requestData.fertilizerConstants[fert]) {
389
+ console.error(`Отсутствует удобрение: ${fert}`);
390
  hasErrors = true;
391
  }
392
  }
393
+
394
+ // Проверяем основные параметры профиля
395
+ const requiredProfileFields = ['P', 'K', 'Mg', 'Ca', 'S', 'NO3_RAT', 'TOTAL_NITROG'];
396
+ for (const field of requiredProfileFields) {
397
+ if (isNaN(requestData.profileSettings[field])) {
398
+ console.error(`Некорректное значение для параметра ${field}`);
399
  hasErrors = true;
400
  }
401
  }
402
+
403
  if (hasErrors) {
404
+ alert("Пожалуйста, проверьте введенные данные. Обнаружены ошибки в форме.");
405
  return;
406
  }
407
+
408
+ // 4. Отправка данных на сервер
409
+ fetch('/calculation', {
410
+ method: 'POST',
411
+ headers: {
412
+ 'Content-Type': 'application/json',
413
+ },
414
+ body: JSON.stringify(requestData)
415
+ })
416
+ .then(response => {
417
+ if (!response.ok) {
418
+ throw new Error(`HTTP error! status: ${response.status}`);
 
 
 
419
  }
420
+ return response.json();
421
+ })
422
+ .then(data => {
423
+ console.log("Успешный ответ от сервера:", data);
424
+ // Здесь можно добавить обработку успешного ответа
425
+ })
426
+ .catch(error => {
427
+ console.error("Ошибка при отправке запроса:", error);
428
+ alert("Произошла ошибка при расчете. Пожалуйста, попробуйте еще раз.");
429
+ });
430
  });
431
  </script>
432