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

ajax PHP HTML POST - problem (na wyplutym kodzie przez include nie można operować js )

VPS Starter Arubacloud
0 głosów
699 wizyt
pytanie zadane 4 sierpnia 2016 w JavaScript przez Damian Makieła Nowicjusz (200 p.)

Witam to może zacznę od struktury mojego projektu.
Słowem wstępu, rozumiem już działanie HTML'a, PHP'a, javascript ale mam trudności z odczytywaniem jeśli chodzi o requesty i cały ten xml itd. ..

Z obserwacji zauważyłem że jeśli jquery prześlę ajaxem $.POST to kod PHP if (isset POST ..
odbierze ten kod, np zapisze do bazy danych, wykona coś po stronie serwera m.in. natomiast w warstwie klienta po stronie klienta nie zrobi nam już echo bo wymagany był by header() czy coś podobnego co załaduje stronę z funkcjami PHP, i tutaj moje pytanie się rodzi bo nie bardzo rozumiem logikę ajaxa w samym wczytywaniu, czy on wczytuje do jakiejś pamięci patologicznej za przeproszeniem że wypluwając kod success'em .html() jak potem na tym kodzie wyplutym próbuję użyć czegokolwiek, chociażby zdarzenia .click to nic sie nie dzieje? 

Znalazłem tu na stronie jedynie coś takiego ale inny przykład, temat o nazwie na forum
JQuery $.post() i $.ajax() zwracają kod OBECNEJ STRONY zamiast wiadomości z PHP

Mam tą strukturę:
strona gdzie jest nav i .content strony (content wymienny, menu to główna strona), w content'cie się includują podstrony.. ale na php include case switch'u nie chcę tego robić ponieważ tego nie chcę osiągnąć, to by mi wymieniało całą część strony tam gdzie mam content w zależności co kliknę w menu a ja chcę to ładować ajaxem.

główny plik index: (część kodu uproszczona żebyście się połapali co i jak)

<!DOCTYPE html>
<html>
<head>
</head>
<body>
        <nav>
                <div>O mnie</div>
        </nav>
        <div class="content">

        </div>



<script type="text/javascript">
$("nav div").click(function() {
	$.ajax({
		type: "POST",
		url: "gogo.php",
		data: {
			value: ""
		},
		success: function(data) {
			$('.content').html(data);
		}
	});
});
</script>

</body>
</html>

 

W pliku gogo w PHP mam:

<?php
	if (isset($_POST['value'])) {

	}
?>

no i w środku isset'a mam include.. co? dany plik, a dany plik to dana podstrona, i teraz tak ok ładuje mi ją fajnie, jak to mówią DZIAŁA, ale jest problem z tym że w tej podstronie są inputy, i jak w js próbuję na nich wykonać zdarzenie .blur to nic się nie dzieje, przypadek jak z tego tematu co ten gość pisał, tylko że mi działa.. prawie..

Dodam że próbowałem w tym samym pliku umieścić podstronę (w pliku gogo) ale dalej nic mi to nie dawało strona się wczytuje ajaxem ale jest bezużyteczna jeśli chodzi o wykorzystanie developerskie.

Nawet próbowałem umieścić cały kod PHP z tym issetem w głównym pliku index - główna strona no ale wtedy 

$('.content').html(data); 

... dział tak że mi klonował ten content

 

Proszę o pomoc dobrzy ludzie xd

no i jak zrobić to ajaxem tak żebym mógł mieć content wymienny
PS dlaczego tak się upieram ajaxem? ano dlatego że chcę zrobić taki bajer że jak raz wczytasz daną podstronę to przy przełączaniu się na inną, to na tej starszej używa się display none, dzięki czemu możemy wędrować po podstronach i dane nam się tam nie utracą (wprowadzone w inputach).. bo robię coś takiego podobnego jak zakładki, tylko że dalej w formie menu tylko już nie na ul li ani na a hrefach tylko divy uruchamiane ajaxem

 

Pozdrowienia

1 odpowiedź

+1 głos
odpowiedź 4 sierpnia 2016 przez writen Nałogowiec (29,060 p.)

Słowem wstępu, rozumiem już działanie HTML'a, 

 tylko że dalej w formie menu tylko już nie na ul li ani na a hrefach tylko divy uruchamiane ajaxem

<nav>
                <div>O mnie</div>
</nav>

Śmiem stwierdzić, że nadal nie rozumiesz HTML'a. 

komentarz 4 sierpnia 2016 przez Damian Makieła Nowicjusz (200 p.)

Przykład na szybko dałem żebyście wiedzieli co i jak, nie czepiaj sie laugh

Sprawdzam właśnie w sieci o co biega z ajaxem w jQ, jest tak jak myślałem, okazało się że skrypt ajaxa wczytuje coś na co nie zadziała .click lub .blur

$("input").blur(function() {

da się to jakoś zapisać żeby zdarzenie .click miało jakiś wpływ na nowy kod który pojawia się ajaxem ?

komentarz 4 sierpnia 2016 przez writen Nałogowiec (29,060 p.)

Należy podpiąć zdarzenie funkcją on(). Na przykład w ten sposób:

$(".content").on("blur", "input", function() { } );

 

komentarz 4 sierpnia 2016 przez Damian Makieła Nowicjusz (200 p.)
<script type="text/javascript">
$(".header").click(function() {
    $(".content").load("gogo.php");

});
</script>

Zostawiam jednak to i pozbywam się PHP bo rozważam podpięcie nawet Node.js ..ale to inny temat.

PS $(".content").on("blur", "input", function() { } );
coś mi nie działa, czytałem już o tym.. i o .live, ale dalej coś mi nie chce zadziałać..

chwilowo mam to zrobione tak, żeby kod js który jest wczytywany też przez ajax jakby.. również działał to mam dany skrypt podpięty w pliku głównym oraz na podstronie.. jednocześnie, działa mi jak narazie ale chciałbym podpinać swoje skrypty tylko w głównym pliku

jakieś rady jeszcze?
komentarz 4 sierpnia 2016 przez efiku Szeryf (75,160 p.)
Pewnie nie używasz xdebug w php to sobie zrob w pliku gogo.php print_r ($_POST) skapniesz się jak te dane odebrać i coś zmienić :)
komentarz 4 sierpnia 2016 przez Damian Makieła Nowicjusz (200 p.)

Witam ponownie writen.. działa, wybacz teraz zrozumiałem to co napisałeś.. pierwsze to wskazujesz skąd ma zaktualizować kod i jakby podpiąć zdarzenie a potem mówisz dopiero blur i jaki element.

Problem rozwiązany. Dla poszukujących mających ten sam problem.. (patrz niżej)...

1. Ładujesz /lub/ doładowywujesz ajaxem swój guzik (button) lub też nie jako <button> ale <div>.. oparty na zdarzeniu .click ? nie będzie działać, tak samo jak .blur i inne. Wtedy musisz dodatkowo zdefiniowac w js ten guzik bo on jest dodawany przez ajaxa (ten guzik) ale tylko sam jego wygląd, a skrypty w elementach które są ładowane przez ajax nie działają. Wtedy możesz globalnie dany element ładowany przez ajaxa podpiąć do wartwy w której js "widzi" twój guzik poprzez nie coś tam.click tylko :

$(".content").on("blur", ".costam input", function() {

.content - tu wskazujesz że w contencie ajax umieścił załadowany guzik, blur to rodzaj twojego zdarzenia, może być np click, a .costam input .. to inaczej ten element po którego kliknięciu wykona się .blur.

No to zrozumiałem po części chociaż ajaxa jak działa.

PS chyba rezygnuje z PHP, chociaż nie we wszystkich przypadkach, fajnie przy ajaxie akurat działa to:
    $(".content").load("gogo.php");

ładujesz cały plik, coś jak w php include, PS nie ładuje wtedy skryptów tak samo, bo to dalej ajax ładuje, więc dla tego ograniczę php ale nie do końca ;)

 

Pozdrawiam, dzięki za pomoc

komentarz 5 sierpnia 2016 przez Damian Makieła Nowicjusz (200 p.)

Zostanę chyba już przy tym:

$(".header").click(function() {
	$(".content").load("gogo.php");
});

Bo i tak muszę wysłać dane ajaxem do czegoś co mi includuje podstrony a wysłanie takich danych to o wiele więcej kodu w jQ ajax, i to jeszcze do PHP który to musi odebrać i sam includować po swojemu, a tak to załatwiam to wszystko tymi 3 linijkami kodu.

Bo ajaxem jak prześlę żądanie do PHP to echo nie działa rozumiem że print w sumie.. wypali mi to jako nowy czysty kod 

Podobne pytania

0 głosów
2 odpowiedzi 1,039 wizyt
pytanie zadane 14 lutego 2016 w JavaScript przez makoso Mądrala (7,380 p.)
0 głosów
1 odpowiedź 364 wizyt
0 głosów
1 odpowiedź 820 wizyt
pytanie zadane 21 marca 2017 w JavaScript przez Zbigniew Andrysiak Bywalec (2,470 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...