Skocz do zawartości


Zdjęcie

Odświerzenie zaincludowanego pliku


  • Zaloguj się, aby dodać odpowiedź
10 odpowiedzi w tym temacie

#1 lustfingers

lustfingers

    Zaawansowany

  • Members
  • PipPipPip
  • 106 postów

Napisano 06 maj 2015 - 16:51

Witam, chciałbym się dowiedzieć czy jest taka mozliwość aby odświerzyć zawartość jednego zaincludowanego pliku, naciskając odpowiedni przycisk w innym zaincludowanym pliku.

 

Zamówienia w jednym kroku składają się z kilku zaincludowanych plików jednym z nich jest order-opc-new-account który na dole posiada przycisk Zapisz, po kliknięciu zapisują sie dane do bazy. Kolejnym plikiem jest order-carrier i to jego zawartośc chciałbym odświerzać podczas kliknięcia przycisku zapisz opisanego powyżej.

 

Plik order-carrier jest praktycznie w całości w div-ie o id="carrier_area"

 

Ktoś ma jakis pomysł jak to zrobić? Presta 1.5.6.0



#2 lustfingers

lustfingers

    Zaawansowany

  • Members
  • PipPipPip
  • 106 postów

Napisano 08 maj 2015 - 18:33

Odświerzam, jakiekolwiek pomysły?



#3 ircykk

ircykk

    Administrator

  • Administrators
  • 5031 postów
  • PrestaShop:1.5, 1.6

Napisano 09 maj 2015 - 23:13

W JS masz metodę getCarrierListAndUpdate(), wywołanie jej odświeża listę dostawców.



#4 lustfingers

lustfingers

    Zaawansowany

  • Members
  • PipPipPip
  • 106 postów

Napisano 10 maj 2015 - 10:11

Dziękuję za odpowiedź, podpiałem pod button tą funkcję i nie było efektu żadnego widocznego na stronie. Zmieniłem w tej funkcji id kontenera na #carrier_area teraz widzę że po kliknięciu "coś" sie dzieje, jednak w pliku order-carrier.tpl mam dodatkowe zmienne isguest oraz logged pomimo że niby kontener się odświerza nie pokazują się komunikaty przypisane do tych zmiennych a o to mi właśnie chodzi żeby sie pokazały, w momencie gdy klient zapisuje swoje dane zmienia się z visitor na guest więc powinny się pokazac te komunikaty, gdy całkiem przeładuję stronę koszyka to komunikaty oczywiście są widoczne.



#5 ircykk

ircykk

    Administrator

  • Administrators
  • 5031 postów
  • PrestaShop:1.5, 1.6

Napisano 10 maj 2015 - 13:18

To musisz wykonać po zapisaniu danych klienta, nie przed ani w trakcie ale po zakończonym zapytania. Pamiętaj że ajax działa asynchronicznie więc jak uruchamiasz 2 funkcje jedna po drugiej to de facto uruchamiają się razem.

 

Wciśnij F12 i wpisz w konsoli getCarrierListAndUpdate() i enter, (po zapisaniu danych klienta) sprawdź czy tpl zawiera już właściwe zmienne.



#6 lustfingers

lustfingers

    Zaawansowany

  • Members
  • PipPipPip
  • 106 postów

Napisano 10 maj 2015 - 14:20

O ile robię wszystko dobrze to nie działa to tak jakbym chciał, opcja pierwsza to taką że z przycisku usunąłem onclick="getCarrierListAndUpdate()" i po odpaleniu w konsoli nic sie niedzieje, druga gdy zostawiam to w przycisku i odpalam z konsoli to coś sie dzieje jednak po chwili metody się chowają i ich w ogóle nie widać. Skoro fukcje uruchamiaja się jednocześnie to może jest sposób aby do funkcji zapisującej dane klienta dodać coś w stylu location.reload () tak aby najpierw się zapisały dane a później odświerzyła cała strona koszyka?



#7 ircykk

ircykk

    Administrator

  • Administrators
  • 5031 postów
  • PrestaShop:1.5, 1.6

Napisano 10 maj 2015 - 20:07

Onclick odpada jak pisałem wcześniej, musisz to wykonać po zapisaniu danych. "Nie działa" to zbyt ogólne, jest błąd w konsoli, jeśli tak to jaki? Zapytanie ajax się wysypuje?



#8 lustfingers

lustfingers

    Zaawansowany

  • Members
  • PipPipPip
  • 106 postów

Napisano 11 maj 2015 - 18:03

Wydaje mi się ze robie wszystko poprawnie, jednak po wywołaniu funkcji nie widzę błędów w konsoli z tym zwiazanych i opcje przypisane do logged i isguest tak jakby się nie odświerzały, przygotowałem krótki filmik co i jak robię, może to wyjasni.

 



#9 ircykk

ircykk

    Administrator

  • Administrators
  • 5031 postów
  • PrestaShop:1.5, 1.6

Napisano 11 maj 2015 - 18:48

Czemu dałeś fadOut :/ nie widać efektu. Po odświeżeniu strony i odpaleniu getCarrierListAndUpdate() są radiobutton'y czy nie?



#10 lustfingers

lustfingers

    Zaawansowany

  • Members
  • PipPipPip
  • 106 postów

Napisano 11 maj 2015 - 19:07

W standardzie jest włąśnie fadeOut nie zmieniłem na potrzeby filmiku, jednak po zmianie na fadeIn nadal nie ma radiobuttonów, nawet jak odświerzę zawartość strony i wtedy one są widoczne to po wywołaniu funkcji znikają.

 

Ta funkcja u mnie w standardzie wygląda tak:

function getCarrierListAndUpdate()
{
	$('#opc_delivery_methods-overlay').fadeIn('slow');
	$.ajax({
		type: 'POST',
		headers: { "cache-control": "no-cache" },
		url: orderOpcUrl + '?rand=' + new Date().getTime(),
		async: true,
		cache: false,
		dataType : "json",
		data: 'ajax=true&method=getCarrierList&token=' + static_token,
		success: function(jsonData)
		{
			if (jsonData.hasError)
			{
				var errors = '';
				for(var error in jsonData.errors)
					//IE6 bug fix
					if(error !== 'indexOf')
						errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
				alert(errors);
			}
			else
				updateCarrierList(jsonData);
			$('#opc_delivery_methods-overlay').fadeOut('slow');
		}
	});
}

Próbowałem z różnymi id kontenerów zawsze taki sam efekt czyli brak radiobuttonów.



#11 ircykk

ircykk

    Administrator

  • Administrators
  • 5031 postów
  • PrestaShop:1.5, 1.6

Napisano 11 maj 2015 - 22:48

Masz może ten sklep online żebym mógł zobaczyć?






Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych

Hosting zapewnia: Hekko.pl