• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wysłanie zapytania sql w tle, bez przeładowania strony

42 Warsaw Coding Academy
0 głosów
857 wizyt
pytanie zadane 7 października 2021 w JavaScript przez Piotr Popławski Użytkownik (610 p.)
zmienione kategorie 7 października 2021 przez draghan

Proszę o pomoc w zakresie korekty poniższego kodu

function HideContent(d)
{
  var id_a = $("#id_a").val();
  var f    = document.getElementsByName('rang');
  var v;

for(var i = 0; i < f.length; i++){
    if(f[i].checked){
        v = f[i].value;
    }
  }
  
  
  $.ajax({
      method :"POST",
        url  :"zapisz.php",
        data : {id_a:id_a, v:v},
     success :function() {
          alert( "Zapisano dane");
        },
     error   : function(blad) {
          alert( "Wystąpił błąd");
        }
    });

skrypt ma za zadanie pobranie dwóch zmiennych z formularza i wywołanie w tle pliku z zapytaniem do bazy z przesłanymi 2 parametrami. Nie wywołuje mi pliku zapisz.php :(. Już teraz dziękuję za podpowiedzi.

komentarz 7 października 2021 przez SzkolnyAdmin Szeryf (89,610 p.)
Standardowy wywiad:

1. Jest jakiś komunikat błędu (ze strony serwera lub konsoli)?

2. Czy kod w pliku zapisz.php jest poprawny?

3. Czy dane z formularza s a poprawnie pobierane przez skrypt?

Najlepiej ujawnij więcej kodu.
1
komentarz 7 października 2021 przez Piotr Popławski Użytkownik (610 p.)

Dziękuję wszystkim, którzy sie pochylili nad problemem. Jednak w czasie oczekiwania na podpowiedź zrobiłem sam ;). Działa !

  var id_a = $("#id_a").val();
  var f    = document.getElementsByName('rang');
  var v;

for(var i = 0; i < f.length; i++){
    if(f[i].checked){
        v = f[i].value;
    }
  }

  const dataToSend = {
    id_a: id_a,
    rang: v
}
url = "zapisz.php";
$.post(url, dataToSend)
.done(res => {
    console.log(res);
})
.fail(() => {
    alert("Wystąpił błąd w połączeniu");
})


  document.getElementById(d).style.display = "none";
  document.getElementById('dzieki').style.display = "block";

 

komentarz 9 października 2021 przez VBService Ekspert (256,600 p.)
edycja 9 października 2021 przez VBService

Po tym zapisie

  var f    = document.getElementsByName('rang');
  var v;
 
for(var i = 0; i < f.length; i++){
    if(f[i].checked){
        v = f[i].value;
    }
  }

zgaduję, że chodzi o jakąś grupę radio button-ów o name="rang", więc powyższy zapis można sprowadzić do jednej linii kodu.

var v = document.querySelector('[name="rang"]:checked').value;

 

 

P.S.

<input type="radio" name="rang" value="pierwszy">
<input type="radio" name="rang" value="drugi">
<input type="radio" name="rang" value="trzeci">
<button>Sprawdź</button>
const button = document.querySelector('button');
button.addEventListener('click', () => {
  if (document.querySelector('[name="rang"]:checked'))
    console.log(document.querySelector('[name="rang"]:checked').value);
  else
    console.log('Nie zaznaczono');
})

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,135 wizyt
0 głosów
2 odpowiedzi 1,320 wizyt
pytanie zadane 29 września 2017 w JavaScript przez Raster22 Obywatel (1,640 p.)
0 głosów
1 odpowiedź 1,786 wizyt
pytanie zadane 4 lipca 2017 w JavaScript przez `Krzychuu Stary wyjadacz (13,940 p.)

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...