Portál AbcLinuxu, 10. května 2025 01:17

Dotaz: jQuery.ajax() + php

26.8.2010 22:26 Asaru
jQuery.ajax() + php
Přečteno: 905×
Odpovědět | Admin
Ahoj, při používání jQuery.ajax() jsem se dostal k problému. Jakmile načtu dokument, načtu funkci
var url = 'include/pages/window.php'; function reload() { $("#out").load(url); }
tak splní to, co očekávám, dokument se načte bez problému. Pokud se ale o stejnou operaci pokusím podruhé bez aktualizování celé stránky, stránka přestane odpovídat a zůstane pouze bílá obrazovka. Pokud ale použiju tento synchronous request
var url = 'include/pages/window.php'; var window = $.ajax({ url: url, async: false }).responseText;
document.getElementById('out').innerHTML = window;

tak se vše načte v pořádku i 10x za sebou, problém ale je, že nechci používat sync request. Nevíte, v čem by mohla být chyba?
Předem děkuji za odpovědi

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.8.2010 22:36 chrono
Rozbalit Rozbalit vše Re: jQuery.ajax() + php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Akým spôsobom voláš tú funkciu reload?
26.8.2010 22:50 Asaru
Rozbalit Rozbalit vše Re: jQuery.ajax() + php
Poprvé v kodu
<script type="text/javascript">reload();</script>
Podruhé to je defaultně přes setTimeout(reload(), 20000);
Zkoušel jsem to i okomentovat a použít <button onclick="reload()">Reload</button>, ale problém je stále stejný
26.8.2010 23:34 sivlk | skóre: 15 | blog: sivlk
Rozbalit Rozbalit vše Re: jQuery.ajax() + php
setTimeout('reload()',20000);
26.8.2010 23:36 chrono
Rozbalit Rozbalit vše Re: jQuery.ajax() + php
Naozaj tam máš setTimeout(reload(), 20000); (a nie setTimeout(reload, 20000); pripadne setTimeout("reload()", 20000);)? Ak áno, tak ti to fungovať nebude.

Obsah akého elementu to vlastne prepisuješ? Nie je v ňom náhodou aj tá reload funkcia (a teda si ju pri zmene obsahu v podstate vymažeš)?

Skúšal si pozrieť vo Firefox (alebo v inom prehliadači s chybovou konzolou javascriptu), či to nepíše nejakú chybu?
27.8.2010 09:12 Asaru
Rozbalit Rozbalit vše Re: jQuery.ajax() + php
Samozřejmě tam mám setTimeout("reload()", 20000);, jen jsem tam ty uvozovky zapomněl napsat. Chrome chybová konzole hází tohle:
Uncaught TypeError: Cannot read property 'innerHTML' of null scripts/common.js:91
Uncaught TypeError: Cannot set property 'innerHTML' of null scripts/common.js:113

a Firefox tohle:
Nenalezen žádný prvek
document.getElementById("out") is null

V podstatě se to chová, jako když ten druhý request se nevypíše do <div id="out"> ale do celý stránky (objeví se bílá stránka -> zmizne css background nastavení, nemůže najít druhý <div id="out2"> -> to je ta chyba na řádku 113). reload() funkce je v externím .js souboru, takže tam by problém být neměl.
Řešení 1× (Asaru (tazatel))
28.8.2010 15:30 Asaru
Rozbalit Rozbalit vše Re: jQuery.ajax() + php
Ok, tak jsem prošel phpinfo();, nastavení, otestoval vše na localhostu a zjistil jsem, že problém není v kodu, ale v hostingu... takže díky za snahu, zase jsem o to víc přesvědčen, že na webzdarma nefunguje nic tak jak má.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.