Nette AJAX - Uncaught TypeError: $.nette is undefined

Nette AJAX - Uncaught TypeError: $.nette is undefined

Jak vyřešit chybu Uncaught TypeError: $.nette is undefined, která se může zobrazit v Nette projektu, když chceme použít AJAX?

 

Mějme např. tento kód:

        $.nette.ajax(
            {
                url: $(this).attr('data-href'),
                data: {variantId: $(this).attr('data-id')}
            });

Který může vyvolat chybu níže.

 

Chyba

Uncaught TypeError: $.nette is undefined

 

Řešení

Je potřeba použít novější js knihovnu pro obsluhu snippetů - Naja.

npm install naja


AJAX požadavek pak bude vypadat třeba takto:

        naja.makeRequest(
            'POST',
            $(this).attr('data-href'),
            {variantId: $(this).attr('data-id'), amount: amount}
        );

Komentáře

Vaše reakce na Nette AJAX - Uncaught TypeError: $.nette is undefined
Soptík
#1959

06.12.2024 [1]
Ahoj,

pouzivam nette naja ajax a mam zajimavy problem. Pokud jsou nejake polozky, tak se redraw normalne provadi a funguje to na jednicku jak je ocekavano.
Tzn. $this->redrawControl('products'); probehne.

Ale problem nastane, kdyz v danem snippetu je obsah a ja potrebuji prekreslit, ze tam zadny obsah nasledne byt nema. Tzn. mam napr. produkty, neco prefiltruju ajaxem a pak to zadne produkty nesplnuji a ja potrebuji ty predesle produkty odstranit.

Vyzkoumal jsem, ze v takovem ajax XHR pozadavku nejsou data pro tento snippet a tim padem se nic neprekresluje.

Opravdu nevim co s tim, poradite nekdo? Diky
Hanz
#1960

06.12.2024 [2]
Poslední komentář Reakce na komentář #1959
Ahoj,

už jsem se s tím setkal. Může to mít více příčin.

1.) Je potřeba udělat to, že i když tam žádné položky být nemají, tak tam stejně nějaký obsah poslat musíš, takže pokud posíláš do šablony třeba:
$this->template->products = null;

Tak tam raději pošli string 'null'
$this->template->products = 'null';

Pak udělej
$this->redrawControl('products');

Tzn. tímto zajistíš, že se nějaká dota do XHR požadavku pošlou (ověř si v XHR, že tam bude tvůj snippet vidět). V šabloně pak pochopitelně musíš udělat podmínku na 'null'.

2.) Nebo tam může být ještě druhotný problém s tím, že máš nad snippetem v šabloně nějaké podmínky přes které to neprojde a tím pádem se to nepřekreslí - takže to chce podmínky revidovat a pohrát si s nima.

Měj se

Související obsah

programovani

nette

ajax

php

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.