Avatar billede jannick281090 Nybegynder
26. oktober 2010 - 14:42 Der er 9 kommentarer og
1 løsning

Sync Ajax Request - Scripts virker ikke på den requestede side

Hej

Jeg har en side hvor jeg har lavet en div boks der kan rykkes rundt på siden som indeholder login til siden (PHP), og kan ikke bruge et frame til at hente login siden ind i boksen derfor har jeg valgt at bruge Ajax (jQuery), til at hente det ind men mine javascripts på den hentede side fungerer ikke, nogen der har en idé om hvad der kan være galt?
Avatar billede jannick281090 Nybegynder
26. oktober 2010 - 14:45 #1
Skal lige siges at det virker fint når jeg går direkte ind på den requestede side udenom Ajax Requestet.
Avatar billede jannick281090 Nybegynder
26. oktober 2010 - 15:02 #2
Har lige testet med en alert i toppen af den requestede side og det virkede fint, så forstår ikke hvorfor mine andre scripts ikke virker igennem ajax requestet men fint nok udenom ajax requestet.
Avatar billede intenz Novice
26. oktober 2010 - 16:09 #3
Det er umuligt at svare på uden at se din kode...
Avatar billede jannick281090 Nybegynder
27. oktober 2010 - 09:03 #4
Forståeligt, kan dog ikke opgive min kode her men kan lave et simpelt eksempel som viser hvordan jeg har lavet det.

index.php [

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">

    <head>
        <title>Eksempel</title>
        <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
        <link rel="stylesheet" type="text/css" href="css/example.css"/>
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
            $(function() {
                $.ajax({
                    async: false,
                    cache: false,
                    dataType: 'html',
                    url: 'login.php',
                    success: function(data) {
                                                    $('#login').html(data);
                    }
                });
            });
        </script>
    </head>

    <body>
       
        <div id="login"></div>
       
    </body>

</html>

]

login.php [

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">

    <head>
        <title>Eksempel</title>
        <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
        <link rel="stylesheet" type="text/css" href="css/example2.css"/>
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.datePicker.js"></script>
        <script type="text/javascript" src="js/date.js"></script>
        <script type="text/javascript" src="js/sortable.js"></script>
        <script type="text/javascript">
            $(function()
            {
                $('#start-date.date-pick').datePicker(
                    {
                        startDate: '01-01-1970',
                        endDate: (new Date()).asString(),
                        clickInput: true
                    }
                );
            });
           
            $(function()
            {
                $('#end-date.date-pick').datePicker(
                    {
                        startDate: $('#start-date').val(),
                        endDate: '01-01-2099',
                        clickInput: true
                    }
                );
            });
           
            $(function()
            {
                $('#start-date').bind(
                    'dpClosed',
                    function(e, selectedDates)
                    {
                        var d = selectedDates[0];
                        if (d) {
                            d = new Date(d);
                            $('#end-date').dpSetStartDate(d.asString());
                        }
                    }
                );
                $('#end-date').bind(
                    'dpClosed',
                    function(e, selectedDates)
                    {
                        var d = selectedDates[0];
                        if (d) {
                            d = new Date(d);
                            $('#start-date').dpSetEndDate(d.asString());
                        }
                    }
                );
            });
        </script>
    </head>

    <body>
       
        <div id="eksempel">
            Når man er logget ind så bliver undersiderne inkluderet her alt efter hvad der står i $_GET['page'], og i mit tilfælde er det jQuery.DatePicker.js og sortable.js der ikke fungerer.
        </div>
       
    </body>

</html>

]

jQuery.DatePicker.js har jeg herfra:
http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/

sortable.js har jeg herfra:
http://yoast.com/articles/sortable-table/
Avatar billede intenz Novice
27. oktober 2010 - 11:41 #5
Du kan ikke hente javascript ind via jquery på nogen effektiv måde.

Er der en grund til det skal være ajax? Du kan vel bare lave en
<?php
include('login.php');
?>

i din div?
Avatar billede jannick281090 Nybegynder
27. oktober 2010 - 12:10 #6
Kan ikke være PHP da hovedsiden hvor det her login skal placeres kører i et CMS som er kodet i ASP.NET og det jeg er ved at kode er vores Kundecenter i PHP som skal ligne at det er en del af hovedsiden.
Avatar billede intenz Novice
27. oktober 2010 - 14:01 #7
Du kommer ikke til at kunne bruge ajax til at hente det dokument og køre javascript koden. Ikke på den måde du har lavet login.php på nu i hvert fald.

Du bør flytte alt dit javascript fra login.php over i index.php, og så nøjes med at hente HTML'en fra login.php med ajax, og så efterfølgende køre javascript koden direkte fra index.php.

Du kan herudover bruge:
http://api.jquery.com/jQuery.getScript/

til at hente dine <script> elementer i index.php.
Avatar billede intenz Novice
27. oktober 2010 - 14:09 #8
Alternativt kan du prøve at smide at den javascript kode du har skrevet direkte i HTML'en ind i en fil, som du sætter i en <script> tag ligesom de andre (date.js, sortable.js, osv.). (i login.php).

Jeg ved ikke om det måske vil virke.
Avatar billede jannick281090 Nybegynder
27. oktober 2010 - 14:26 #9
Begge forslag har jeg allerede prøvet, og det virker heller ikke :(
Hvad jeg bare ikke forstår er at jeg sagtens kan kalde en alert i login.php igennem ajax kaldet, det virker også hvis jeg gør det i en af javascript filerne.
Avatar billede jannick281090 Nybegynder
19. februar 2011 - 00:37 #10
Lukker spørgsmålet :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester