Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: jQuery .ajax

Cartter [06.06.2010 16:42:25]

#

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?

jlaire [06.06.2010 19:13:39]

#

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.

Cartter [06.06.2010 23:25:23]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta