Avatar billede styrk Nybegynder
07. september 2009 - 10:14 Der er 9 kommentarer og
1 løsning

jquery og ie

Hejsa.

Jeg har lavet følgende script i jquery, som et plugin:

(function($)
{
    $.user = function()
    {
        $.extend(this, {
            load: function()
            {                   
                $.post("ajax/load.php", function(result)
                {
                    var data = JSON.parse(result);
                   
                    $.fn.setText(".company", data.company ? data.company : "Ingen firmanavn angivet");
                    $.fn.setText(".contact_person", data.contact_person);
                    $.fn.setText(".email", data.email);
                    $.fn.setText(".phone", data.phone);
                    $.fn.setText(".address", data.address);
                    $.fn.setText(".postcode_city", data.postcode_city);
                });
            },
           
            save: function()
            {
                $.post("ajax/save.php",
                    {
                        company: $("input[name=company]").val(),
                        contact_person: $("input[name=contact_person]").val(),
                        email: $("input[name=email]").val(),
                        phone: $("input[name=phone]").val(),
                        address: $("input[name=address]").val(),
                        postcode_city: $("textarea[name=postcode_city]").val()
                       
                    }, function(result)
                    {
                        $.fn.showInfofield(1, "Kontakt informationerne er nu gemt.");
                    }
                );
            },
           
            changepass: function()
            {
                $.post("ajax/changepass.php",
                    {
                        newpass: $("input[name=newpass]").val()   
                                                           
                    }, function(result)
                    {
                        $.fn.showInfofield(1, "Din adgangskode er nu skiftet, vent venligst...");
                        window.location.href = "/admin/index.php";
                    }
                );
            }
        });
    }
})(jQuery);

Jeg kalder så scriptet sådan:

$(document).ready
(
    function()
    {
        var u = new $.user;
        u.load();
       
        $("#userform").submit(function()
        {
            u.save();
            u.load();
            return false;
        });
       
        $("#changepassForm").submit(function()
        {
            u.changepass();
            return false;
        });
    }
);

meeen... problemet er at i Internet Explorer fungere det ikke, funktionen load bliver ikke kørt - og jeg får ingen fejl beskeder - det fungerer fint i FF og andre browsere.

Nogle forslag?
Avatar billede html_wizard Nybegynder
07. september 2009 - 11:25 #1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr">
Avatar billede styrk Nybegynder
07. september 2009 - 14:31 #2
Jeb benytter mig af

<!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">


burde det ikke være godt nok?
Avatar billede olebole Juniormester
07. september 2009 - 15:48 #3
<ole>

Begge DTD'er er lidt outdatede. Fremtiden på WWW hedder ikke XHTML, men HTML - så denne er nok mere realistisk:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Desuden er jQuery aldeles inkompatibel med XHTML (og for den sags skyld også med HTML)  =)

/mvh
</bole>
Avatar billede olebole Juniormester
07. september 2009 - 15:50 #4
- men for at komme til problemet, som nok ikke har noget med DTD'en at gøre: Bliver ready kørt?
Avatar billede styrk Nybegynder
07. september 2009 - 15:55 #5
ja det gør den. Jeg kan fint lave en alert("hejsa");
Avatar billede styrk Nybegynder
07. september 2009 - 16:01 #6
okey jeg kan faktisk konstaterer at load bliver kørt, IE havde åbenbart cached min plugin fil så når jeg tilføjede alerts forskellige steder skete der intet.

Jeg har nu fundet ud af at fejlen må ligge i

                $.post("ajax/load.php", function(result)
                {
                    var data = JSON.parse(result);
                 
                    $.fn.setText(".company", data.company ? data.company : "Ingen firmanavn angivet");
                    $.fn.setText(".contact_person", data.contact_person);
                    $.fn.setText(".email", data.email);
                    $.fn.setText(".phone", data.phone);
                    $.fn.setText(".address", data.address);
                    $.fn.setText(".postcode_city", data.postcode_city);
                });

Af en eller anden årsag kører IE ikke ind i callback funktionen.
Avatar billede olebole Juniormester
07. september 2009 - 16:21 #7
- og du har prøvet at skrive:

$.post("ajax/load.php", function(result) {
    alert("HepHey")
    var data = JSON.parse(result);
Avatar billede styrk Nybegynder
07. september 2009 - 16:25 #8
Yeps. Det er måden hvorpå jeg har testet at callback funktionen ikke bliver "kørt"- eller hvad man nu siger.
Avatar billede styrk Nybegynder
07. september 2009 - 16:55 #9
okey- det viser sig at IE returnerer en parserror, og det gør den fordi at mit response (fra load.php) har forkert mime-type.

Da jeg havde lavet følgende i load.php fungerede det:

header('Content-type: application/json');
Avatar billede styrk Nybegynder
07. september 2009 - 17:14 #10
så jeg lukker :-) Tak for input.
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