DmitrMakeev commited on
Commit
22b25fe
·
verified ·
1 Parent(s): 6890dba

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. nutri_call.html +71 -37
nutri_call.html CHANGED
@@ -325,74 +325,108 @@
325
 
326
 
327
  <script>
328
- // Константы содержания элементов в удобрениях (массовые доли)
329
- const NUTRIENT_CONTENT_IN_FERTILIZERS = {
330
- "CaN2O6": {"NO3": 0.11863, "Ca": 0.16972},
331
- "KNO3": {"NO3": 0.136, "K": 0.382},
332
- "K2SO4": {"K": 0.44874, "S": 0.18401},
333
- "NH4NO3": {"NO3": 0.17499, "NH4": 0.17499},
334
- "MgSO4": {"Mg": 0.09861, "S": 0.13010},
335
- "KH2PO4": {"P": 0.218, "K": 0.275}
336
- };
337
-
338
- // Функция для пересчета процентов в константы
339
  document.getElementById('calculate-btn').addEventListener('click', function() {
340
- // 1. Собираем данные вручную (как в вашем рабочем коде)
 
 
 
 
 
 
 
 
 
 
 
341
  const data = {
342
  fertilizerConstants: {
343
  "CaN2O6": {
344
- "NO3": document.getElementById('fert_ca_no3').value / 100,
345
- "Ca": document.getElementById('fert_ca_ca').value / 100
346
  },
347
  "KNO3": {
348
- "NO3": document.getElementById('fert_kno3_no3').value / 100,
349
- "K": document.getElementById('fert_kno3_k').value / 100
350
  },
351
  "NH4NO3": {
352
- "NH4": document.getElementById('fert_nh4no3_nh4').value / 100,
353
- "NO3": document.getElementById('fert_nh4no3_no3').value / 100
354
  },
355
  "MgSO4": {
356
- "Mg": document.getElementById('fert_mgso4_mg').value / 100,
357
- "S": document.getElementById('fert_mgso4_s').value / 100
358
  },
359
  "KH2PO4": {
360
- "P": document.getElementById('fert_kh2po4_p').value / 100,
361
- "K": document.getElementById('fert_kh2po4_k').value / 100
362
  },
363
  "K2SO4": {
364
- "K": document.getElementById('fert_k2so4_k').value / 100,
365
- "S": document.getElementById('fert_k2so4_s').value / 100
366
  }
367
  },
368
  profileSettings: {
369
- "N": document.getElementById('profile_p').value,
370
- "P": document.getElementById('profile_k').value,
371
- "K": document.getElementById('profile_ca').value,
372
- "Ca": document.getElementById('profile_mg').value,
373
- "Mg": document.getElementById('profile_s').value,
374
- "S": document.getElementById('profile_cl').value,
375
- "NH4": document.getElementById('profile_nh4').value,
376
- "NO3": document.getElementById('profile_no3').value,
377
- "liters": document.getElementById('liters-input').value || 1
378
  }
379
  };
380
 
381
- // 2. Отправка через XMLHttpRequest (как у вас работает)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  var xhr = new XMLHttpRequest();
383
- xhr.open("POST", "/calculation", true); // Относительный URL!
384
  xhr.setRequestHeader("Content-Type", "application/json");
385
 
386
  xhr.onreadystatechange = function() {
387
  if (xhr.readyState === 4) {
 
388
  if (xhr.status === 200) {
389
- console.log("Ответ сервера:", JSON.parse(xhr.responseText));
390
  } else {
391
- console.error("Ошибка:", xhr.status, xhr.statusText);
 
392
  }
393
  }
394
  };
395
 
 
 
 
 
396
  xhr.send(JSON.stringify(data));
397
  });
398
  </script>
 
325
 
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
+
340
+ // 2. Формируем объект данных
341
  const data = {
342
  fertilizerConstants: {
343
  "CaN2O6": {
344
+ "NO3": getValue('fert_ca_no3') / 100,
345
+ "Ca": getValue('fert_ca_ca') / 100
346
  },
347
  "KNO3": {
348
+ "NO3": getValue('fert_kno3_no3') / 100,
349
+ "K": getValue('fert_kno3_k') / 100
350
  },
351
  "NH4NO3": {
352
+ "NH4": getValue('fert_nh4no3_nh4') / 100,
353
+ "NO3": getValue('fert_nh4no3_no3') / 100
354
  },
355
  "MgSO4": {
356
+ "Mg": getValue('fert_mgso4_mg') / 100,
357
+ "S": getValue('fert_mgso4_s') / 100
358
  },
359
  "KH2PO4": {
360
+ "P": getValue('fert_kh2po4_p') / 100,
361
+ "K": getValue('fert_kh2po4_k') / 100
362
  },
363
  "K2SO4": {
364
+ "K": getValue('fert_k2so4_k') / 100,
365
+ "S": getValue('fert_k2so4_s') / 100
366
  }
367
  },
368
  profileSettings: {
369
+ "N": getValue('profile_p'),
370
+ "P": getValue('profile_k'),
371
+ "K": getValue('profile_ca'),
372
+ "Ca": getValue('profile_mg'),
373
+ "Mg": getValue('profile_s'),
374
+ "S": getValue('profile_cl'),
375
+ "NH4": getValue('profile_nh4'),
376
+ "NO3": getValue('profile_no3'),
377
+ "liters": parseInt(document.getElementById('liters-input').value) || 1
378
  }
379
  };
380
 
381
+ // 3. Выводим в консоль то, что собираемся отправить
382
+ console.log("Проверка данных перед отправкой:");
383
+ console.log(JSON.stringify(data, null, 2)); // Красивое форматирование
384
+
385
+ // 4. Проверяем, есть ли ошибки в данных
386
+ let hasErrors = false;
387
+ for (const key in data.profileSettings) {
388
+ if (isNaN(data.profileSettings[key])) {
389
+ console.error(`Ошибка: profileSettings.${key} = NaN`);
390
+ hasErrors = true;
391
+ }
392
+ }
393
+
394
+ for (const fert in data.fertilizerConstants) {
395
+ for (const elem in data.fertilizerConstants[fert]) {
396
+ if (isNaN(data.fertilizerConstants[fert][elem])) {
397
+ console.error(`Ошибка: fertilizerConstants.${fert}.${elem} = NaN`);
398
+ hasErrors = true;
399
+ }
400
+ }
401
+ }
402
+
403
+ if (hasErrors) {
404
+ console.error("Обнаружены ошибки в данных! Отправка отменена.");
405
+ return;
406
+ }
407
+
408
+ // 5. Только после проверки отправляем запрос
409
+ console.log("Отправка данных на сервер...");
410
  var xhr = new XMLHttpRequest();
411
+ xhr.open("POST", "/calculation", true);
412
  xhr.setRequestHeader("Content-Type", "application/json");
413
 
414
  xhr.onreadystatechange = function() {
415
  if (xhr.readyState === 4) {
416
+ console.log("Статус ответа:", xhr.status);
417
  if (xhr.status === 200) {
418
+ console.log("Успешный ответ от сервера:", JSON.parse(xhr.responseText));
419
  } else {
420
+ console.error("Ошибка сервера:", xhr.status, xhr.statusText);
421
+ console.error("Текст ошибки:", xhr.responseText);
422
  }
423
  }
424
  };
425
 
426
+ xhr.onerror = function() {
427
+ console.error("Ошибка сети при отправке запроса");
428
+ };
429
+
430
  xhr.send(JSON.stringify(data));
431
  });
432
  </script>