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?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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>
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?
07. september 2009 - 15:55
#5
ja det gør den. Jeg kan fint lave en alert("hejsa");
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.
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);
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.
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');
07. september 2009 - 17:14
#10
så jeg lukker :-) Tak for input.
Vi tilbyder markedets bedste kurser inden for webudvikling