1. Mitä varten alla oleva success-funktion data on tyhjä?
(function($) { $(document).ready(function() { $.ajaxSetup({ cache:false, type:'POST', url:'/php/ajax-gateway.php', timeout:60000, dataType:'html', error:function(XMLHttpRequest, textStatus, errorThrown) { $('div#content').html('An error occured: ' + errorThrown); } }); $('ul#menu li a').click(function() { $.ajax({ success:function(data, textStatus, XMLHttpRequest) { $('div#content').html(data); } }); }); }); })(jQuery);
/php/ajax-gateway.php
<?php echo '<p>Testi</p>'; ?>
2. Jos muutan tämän...
$.ajax({ success:function(data, textStatus, XMLHttpRequest) { $('div#content').html(data); } });
tällaiseksi...
$.ajax({ success:function(data, textStatus, XMLHttpRequest) { $('div#content').html('<p>Testi</p>'); } });
niin, mitä varten tuo <p>Testi</p> ilmestyy ruudulle scriptin suorituksen ajaksi vain ja katoaa sen jälkeen?
Nyt joutuu arvailemaan, kun ei tiedä miltä HTML näyttää. Minne menun <a>
-elementit linkittävät? Jos samalle sivulle, klikkaaminen lataa sen uudestaan. Tämän saa estettyä palauttamalla click-eventin käsittelijästä false
:
$('ul#menu li a').click(function() { $.ajax({ success:function(data, textStatus, XMLHttpRequest) { $('div#content').html(data); } }); return false; });
Voisit myös laittaa success-funktioon alert(data)
niin näkisit, onko data
-argumentti tosiaan tyhjä vai onko ongelma muualla.
Jos tämä ei auttanut, näytä koko html-tiedosto niin että sitä voi testata.
Kiitoksia funktio. Tuo return false korjasi asian. Oikeastaan koitinkin tuota return false:a jossain vaiheessa, mutta olin pistänyt sen virheellisesti tuonne success-funktion sisään :E
Aihe on jo aika vanha, joten et voi enää vastata siihen.