Avatar billede davidabk Nybegynder
22. maj 2011 - 17:57 Der er 7 kommentarer og
1 løsning

Hjælp til AJAX kode til Firefox og Opera

Hej

Jeg kæmper med et ajax script som virker fint i ie, chrome og safari, men ikke i Firefox og Opera.
Jeg kan simpelt hen ikke se hvad der går galt - så forslag er meget velkomne!

Link til koden: http://tinypaste.com/45368
Avatar billede heinzdmx Nybegynder
22. maj 2011 - 18:43 #1
Hvad er det der ikke virker?

Prøvet at indsætte alert("Start request") og så videre indtil du finder det sted hvor det går galt?

Et problem mange oplever i Opera er at man ikke har malformet HTML man prøver at sætte ind - så går det galt.
Eg.
http://stackoverflow.com/questions/945656/innerhtml-opera-issue
Avatar billede davidabk Nybegynder
22. maj 2011 - 20:53 #2
Hej heinzdmx

Ja.. det var en ide med det alert, for jeg ved ikke ret meget om Javascript, men jeg tænkte at et par skarpe hoveder måske kunne se problemet ved et hurtigt øjekast.

Faktisk sker der bare ikke noget i Opera og Firefox, jeg får ingen fejlmeddelelser, det virker bare ikke..

Jeg prøver lige dit forslag og ser hvor langt koden virker!
Avatar billede heinzdmx Nybegynder
22. maj 2011 - 21:21 #3
Personligt bruger jeg jQuery, der er et bibliotek der gør det nemmere at skrive kode hurtigere, der er nogle der ikke synes man skal bruge det og andre der synes man godt kan, så det må du selv bestemme.

Med jQuery kan det gøres med noget ala:

/**
*  This function creates a Ajax call to the defined responce file.
*  Example: Ajax_InnerHTML('custom=var1', 'name=var1&id=var2', 'DivToChange', 'Responcefile.php', 'Javascript.js', 'JavascriptParameters')
*/
function Ajax_innerHTML(Costum_Parameters, Main_Parameters, AjaxDiv, ResponceFile, JavaScriptToRun, JavaScriptParameters)
{
    var Parameters = Costum_Parameters + '&' + Main_Parameters;

    $.ajax({
      type: "POST",
      url: ResponceFile,
      data: Parameters,
      success: function(msg)
      {
            $("#" + AjaxDiv).html(msg);
            // Run JavaScript after loading innerHTML
            var CompleteJavaScriptToRun = JavaScriptToRun(JavaScriptParameters);
            Run = CompleteJavaScriptToRun;
      }
    });
}


Det kræver dog at du inkludere jquery.js der fylder 31KB.
Hvis du vælger at tage scriptet fra en CDN (content delivery network) så vil brugerene muligheds allerede have det i sin cache når de besøger siden.
Url:
https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js

Google CDN list:
http://code.google.com/intl/da-DK/apis/libraries/devguide.html#jquery

(koden er utestet)
Avatar billede davidabk Nybegynder
22. maj 2011 - 22:09 #4
Hej heinzdmx

Jeg har lige prøvet mig lidt frem og jeg kan se at der er .innerHTML der laver problemerne. Jeg kan ikke lige gennemskue hvad jeg kan gøre i stedet for, men dit forslag er absolut en løsning selvom jeg syntes at det kunne være rart ikke at være afhængig af Jquery!

Ved du hvad problemet er med innerHTML?
Avatar billede heinzdmx Nybegynder
22. maj 2011 - 23:27 #5
innerHTML er ikke en standard, det er noget som Microsoft har opfundet og som andre så har valgt at implementere for kompatibilitet.

innerHTML er dog en del af HTML5 specifikationerne.
http://dev.w3.org/html5/html4-differences/Overview.html


Først og fremmest vil jeg anbefale dig at tjekke hvilken HTML der bliver sendt og om siden er 100% valid HTML.
Avatar billede davidabk Nybegynder
27. maj 2011 - 14:31 #6
Hej heinzdmx

Kan du ikke lige skrive et svar så jeg kan give dig nogle point!
Avatar billede heinzdmx Nybegynder
27. maj 2011 - 18:52 #7
Svar ;)
Fik du løst problemet?
Avatar billede davidabk Nybegynder
01. juni 2011 - 13:47 #8
Ja, din løsning virker super!
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