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

Ajax edycja rekordu

Object Storage Arubacloud
0 głosów
392 wizyt
pytanie zadane 3 marca 2023 w JavaScript przez walkalm Nowicjusz (120 p.)

Witam.

Próbuje już od kilku godzin zrobić edycje rekordu w bazie danych, a dokładniej edycje rekordu. Problem leży w tym i mianowicie nie wiem dlaczego bo moim okiem programisty-amatora wygląda to dobrze, a jednak nie jest. Baza danych jest na pewno dobrze podłączona. W "zbadaj element" pokazuje ID oraz TRESC dobrze w rekordzie który chce zmienic. Chodzi tu o to, że nie wyświetla mi w modal treści kometarza, oraz nie zmienia treści zmienionego komentarza. Bardzo bym prosił o jakąś pomoc.

Dziekuje.

kod w index.php

 <script>

      const openModal = () => {
         $('#update_country').modal('show')
		    var div = $(event.relatedTarget);
		 	var id = div.data('id');
			var tresc = div.data('tresc');
			var item = $(this);
			modal.find('#tresc_modal').val(tresc);
			modal.find('#id_modal').val(id);
      }
      $('#update_country').modal({
        onApprove: function () {
          $('.result').text('Approved')},
        onDeny: function () {
          $('.result').text('Denied')},
      })
	  
$(document).on("click", "#edytuj", function() {
		$.ajax({
			type: "POST",
			url: "ajax_edytujkom.php",
			cache: false,
			data:{
				id: $('#id_modal').val(),
				tresc: $('#tresc_modal').val(),
			},
			success: function(dataResult){
				var dataResult = JSON.parse(dataResult);
				if(dataResult.statusCode==200){
					$('#update_country').modal().hide();
					alert('Komentarz zmieniony!');
					location.reload();					
				}
			}
		});
		});

    </script>

kod modal który sie otwiera lecz nie pokazuje treści komentarza:

       <div class="ui modal"
             id="update_country">
          <div class="header">
            Edycja komentarza
          </div>
  
          <div class="content">
<input type="text" name="tresc_modal" id="tresc_modal" class="form-control-sm" required>
            <br />
          </div>
		  <input type="hidden" name="id_modal" id="id_modal">
          <div class="actions">
<button class="ui green button" type="submit" id="edytuj">Zapisz</button>
            <div class="ui red cancel button">
              <i class="close icon"></i>
              Anuluj
            </div>
          </div>
        </div>

 

komentarz 3 marca 2023 przez ScriptyChris Mędrzec (190,190 p.)

Od początku:

  • czy baza danych się poprawnie aktualizuje?
  • czy Ajax zwraca kod 2xx?
  • czy pokazuje się alert 'Komentarz zmieniony!'?
  • treść komentarza w modalu ma się pokazać wewnątrz inputa?
  • czy zakomentowanie location.reload(); pomaga? Może po prostu treść komentarza wstawiana jest przez JS, ale po odświeżeniu strony serwer go już nie zwraca ze stroną?
  • czy w konsoli przeglądarki są jakieś błędy?

Na oko: strzelam, że wywołanie hide() od razu ukrywa modal

$('#update_country').modal().hide();
komentarz 3 marca 2023 przez walkalm Nowicjusz (120 p.)
  1. Tak, baza danych poprawnie się analizuje,
  2. alert tez pokazuje, że zmieniony komentarz
  3. ajax zwraca succes
  4. tak, tresc komentarza ma się pokazac w input
  5. nie, tutaj w ogóle nie zmienia komentarza
  6. właśnie nie ma żadnych błędów i jestem w szoku dlaczego to nie chce działać
  7. tak , ten kod jest do ukrywania modal

 

Ogólnie cały czas testuje na różne sposoby ale nadal bezskutecznie ;/

1 odpowiedź

+1 głos
odpowiedź 3 marca 2023 przez ScriptyChris Mędrzec (190,190 p.)

Jeśli to jest cały kod, to widzę że nigdzie nie wołasz funkcji openModal. A skoro w jej środku odnosisz się do event (który teraz nie jest przekazywany), to ta funkcja chyba powinna być wołana przez jakiś event handler?

komentarz 4 marca 2023 przez walkalm Nowicjusz (120 p.)

screen jeszcze jeden

komentarz 4 marca 2023 przez walkalm Nowicjusz (120 p.)

2,x zwraca mi ze strony gdzie są komentarze czyli w tym przypadku na posty?post=1

komentarz 4 marca 2023 przez ScriptyChris Mędrzec (190,190 p.)

I to właśnie odpowiedź "2,x" chcesz wstawić do modala? Jeśli tak, to przekaż callback success do $.ajax() dla "posty?post=1" (zamiast "ajax_edytujkom.php") i w nim sobie odbierz dane, które wtedy wstawisz do modala.

komentarz 4 marca 2023 przez walkalm Nowicjusz (120 p.)

no doba, ale posty?post=1 to strona na którym są komentarze. A jak będzie powiedzmy inny post i inne komentarze np posty?post=45 to jak mam zdefiniować zmienną w URL dla ajax? 

1
komentarz 4 marca 2023 przez ScriptyChris Mędrzec (190,190 p.)

Nie rozumiem pytania. Parametr do URL-a przekazujesz poprzez template literal albo konkatenację, np.:

$.ajax({
  url: `posty.php?post=${postId}`,
  // reszta kodu
})

 

Podobne pytania

0 głosów
1 odpowiedź 121 wizyt
0 głosów
2 odpowiedzi 219 wizyt
pytanie zadane 29 grudnia 2018 w JavaScript przez kacperk89 Nowicjusz (140 p.)
0 głosów
1 odpowiedź 393 wizyt
pytanie zadane 8 stycznia 2016 w JavaScript przez michal Mądrala (5,560 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...