Avatar billede Slettet bruger
06. september 2011 - 14:38 Der er 33 kommentarer og
1 løsning

setInterval, AJAX og JQuery - lille problem :)

Hej eksperter.

Jeg har pt. en funktion der reloader siden hvert 5. sekund vha. setInterval som kalder en AJAX funktion.
Dette fungerer ganske fint.

MEN, på siden som loades benytter jeg JQueryUI til nogle dialog-bokse, m.m.
Her er problemet så, at når siden er blevet loadet første gang med setInterval er det som om, at JQuery ikke længere virker.

Er der nogen der har haft dette problem, eller ved hvad der skal gøres?

Jeg kalder setInterval med følgende:
<script type='text/javascript'>intval = window.setInterval('updateOpenRapports(\'47, 83\', 0)', 5000);</script>


Hvor funktionen updateOpenRapports() er en AJAX funktion:
function updateOpenRapports(c, h) {
  var xmlhttp;
 
  if (window.XMLHttpRequest)
    xmlhttp = new XMLHttpRequest();
  else
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 1) {
      window.clearInterval(intval);
      document.getElementById("timerimg").src = "img/icons/loading.gif";
    }
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.body.innerHTML = xmlhttp.responseText;
      document.getElementById("timerimg").src = "img/icons/stop.gif";
      intval = window.setInterval('updateOpenRapports(\'' + c + '\', ' + h + ')', 5000);
    }
  }
  xmlhttp.open("POST", "../intra/?p=s&a=open&c=" + c + "&h=" + h, true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send();
}


Problemet jo så, at når siden bliver loaded vha. AJAX, så fungerer JQuery ikke længere.
Avatar billede heinzdmx Nybegynder
06. september 2011 - 14:44 #1
Jeg vil gætte mig til at det er fordi din ui bokse bliver initialiseret med $('din selector') når du åbner siden, dette gøres kun 1 gang og ikke hver gang.

Der er et par løsninger, en af dem er .live('normalfunction')

Ved f.eks. et click event:

$(document).ready(funtion() {
    $('din selector').live('click', function()
    {
        alert("Du har klikket på linket");

    });
});
Avatar billede Slettet bruger
06. september 2011 - 15:03 #2
Hvordan skruer jeg så min initialisering sammen?
På nuværende tidspunkt ser den således ud:
<script type='text/javascript'>
  $(function() {
    $('#dialog:ui-dialog').dialog('destroy');
    $('#close1').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#close1Opener').click(function() { $('#close1').dialog('open'); return false; });
    $('#close1Closer').click(function() { $('#close1').dialog('close'); return false; });
    $('#del1').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#del1Opener').click(function() { $('#del1').dialog('open'); return false; });
    $('#del1Closer').click(function() { $('#del1').dialog('close'); return false; });
    $('#close2').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#close2Opener').click(function() { $('#close2').dialog('open'); return false; });
    $('#close2Closer').click(function() { $('#close2').dialog('close'); return false; });
    $('#del2').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#del2Opener').click(function() { $('#del2').dialog('open'); return false; });
    $('#del2Closer').click(function() { $('#del2').dialog('close'); return false; });
  });
</script>


Jeg kan sagtens se teorien i, at den kun loades én gang.
Her skal jeg så have den til at loade alle dem der HVER gang siden loades. But how? :)
Og ja, der kan være utrolig mange bokse på én side ;)
Avatar billede heinzdmx Nybegynder
06. september 2011 - 15:14 #3
Hvad med at lægge det som en rigtig funktion altså

function init() {
    $('#dialog:ui-dialog').dialog('destroy');
    $('#close1').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#close1Opener').click(function() { $('#close1').dialog('open'); return false; });
    $('#close1Closer').click(function() { $('#close1').dialog('close'); return false; });
    $('#del1').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#del1Opener').click(function() { $('#del1').dialog('open'); return false; });
    $('#del1Closer').click(function() { $('#del1').dialog('close'); return false; });
    $('#close2').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#close2Opener').click(function() { $('#close2').dialog('open'); return false; });
    $('#close2Closer').click(function() { $('#close2').dialog('close'); return false; });
    $('#del2').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#del2Opener').click(function() { $('#del2').dialog('open'); return false; });
    $('#del2Closer').click(function() { $('#del2').dialog('close'); return false; });
  });


Og så kalde den i:

$(function() {
init();
});


Og samtidigt også kalde den hver gang du har opdateret din dom
Avatar billede Slettet bruger
06. september 2011 - 15:36 #4
Det virkede satme! :) Mange tak!

Ved du om det er muligt at få den til, at stoppe intervallet når én af dialog-boksene åbnes? startes igen hvis/når dialog boksen lukkes igen (uden at formularen indenfor har fået en submit)?
Avatar billede heinzdmx Nybegynder
06. september 2011 - 17:23 #5
Følgende laver en "bind" på eventet dialogopen, kort sagt vil alle de dialoger der rammer en given selector gøre følgende når dialogopen kaldes (det gør jQuery UI selv)

$( ".selector" ).bind( "dialogopen", function(event, ui) {
    window.clearInterval(intval);
});

$( ".selector" ).bind( "dialogclose", function(event, ui) {
  intval = window.setInterval('updateOpenRapports(\'' + c + '\', ' + h + ')', 5000);
});



Dette skal du så gøre for alle de selectors du har :)

Jeg smider et svar her, da det oprindelige er løst, men du er selvfølgelig velkommen til at holde spørgsmålet åbent indtil det andet problem også er løst :)
Avatar billede Slettet bruger
06. september 2011 - 17:49 #6
Jeg havde netop fundet samme løsning :)
Men også et alternativ hertil, fx har jeg prøvet mig med
$('#close1').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind', open: function() { window.clearInterval(intval); }, close: function() { intval = window.setInterval('updateOpenRapports(\'' + c + '\', ' + h + ')', 5000); } });


Det er sådan set samme princip, men blot i samme linie :)
Dog kan jeg se, at du har function(event, ui) hvor jeg blot har function() .. hvad er fordelen ved at tilføje event, ui?

Dog med dét ene problem, at hvis den allerede ER igang med at køre intervallen igennem og den er lidt langsom, så afbryder den ikke intervallen, kan dette lade sig gøre? :)
Avatar billede Slettet bruger
06. september 2011 - 18:08 #7
Eller dvs, det er så ikke intervallen som skal afbrydes, det er selvfølgelig ajax scriptet :)
Avatar billede heinzdmx Nybegynder
06. september 2011 - 18:26 #8
Det kan du gøre ved at din xmlhttp bliver defineret globalt (dvs. uden for din function()

var xmlhttp;

function .... ()
{

  // ... brug af xmlhttp;
  xmlhttp.send();
}

// først tjekkes om der er i gang nu og hvis den er afbrydes
if (xmlhttp) xmlhttp.abort();


Mht til med eller uden ui,event så er den kun nødvendig når du vil tilgå de variabler som de er i din kode, f.eks. ville et eksempel være at du skal have fat i nogle af de variabler der eksistere i event klassen. Derfor kan du fint udelade dem i dit tilfælde og sikkert også langt de fleste
Avatar billede Slettet bruger
06. september 2011 - 19:03 #9
Jeg sad netop og tænkte på, at lave min xmlhttp om til jquery's .ajax funktion.. har du erfaringer med denne?
Er den løsning bedre end den nuværende? :)

I bund og grund er det vel "bare" at omskrive den nuværende funktion til JQuery's $.ajax() funktionen og så kan man bede den om 3 ting:
- hvis den er gået igang med at hente siden, skal den skifte billedet timerimg til loading.gif og stoppe timeren (som i min nuværende)
- hvis den har hentet siden, skal den tjekke om den hentede side er ens med den gamle og i så fald intet gøre, hvis de ikke er ens skal den skifte den og så tjekke igen om 5 sekunder
- hvis den har hentet siden, skal den tjekke om en dialog-boks er åben og i så fald intet gøre, hvis der ingen åbne er skal den skifte den og så tjekke igen om 5 sekunder

Med dette burde jeg da være helt ude ovre problemet? :)
Og så foregår det hele ét sted, nemlig i JQuery koden.

Ville det være en god fremgangsmåde?
Avatar billede Slettet bruger
06. september 2011 - 19:45 #10
Hvis du ikke kan hjælpe mig med den sidste kommentar er jeg også rigeligt tilfreds :) Funktionen med .abort virkede også perfekt :) Så nu skulle det kun være for, at optimere koden :)
Avatar billede heinzdmx Nybegynder
06. september 2011 - 21:43 #11
Jeg vil anbefale dig at lave det hele til jQuery for overskuelighedens.

Kan kigge på det i morgen ;)
Avatar billede Slettet bruger
06. september 2011 - 22:26 #12
Jeg har selv forsøgt mig lidt frem, men ajax delen i jquery er godt nok lidt overskuelig.. men du kan da se hvad jeg har fundet frem til indtil videre :)

function ajaxRefresh() { 
  $.ajax({
    url: '../intra/', data: {p: 's', a: 'open', c: '" & c & "', h: '" & h & "'},
    beforeSend: function(){
      window.clearInterval(intval);
      document.getElementById('timerimg').src = 'img/icons/loading.gif';
    },
    success: function(result){
      $(this).html(result);
    },
    complete: function(){
      document.getElementById('timerimg').src = 'img/icons/stop.gif';
      intval = setInterval('ajaxRefresh()', 5000);
    }
  })
};
$(document).ready(function() {
  intval = setInterval('ajaxRefresh()', 5000);
});


variablerne c og h hentes vha. " & og & ", da serverkoden er asp :)
Linien skrevet med fed VED jeg er forkert, da jeg ikke helt er klar over hvad jeg skal skrive istedet for this for at den vælger hele tiden.
Den tjekker heller ikke om den loadede side er lig den gamle eller om der er en dialog åben :)

Hvis du kan hjælpe i morgen, ville det være en drøm.
Avatar billede heinzdmx Nybegynder
07. september 2011 - 12:20 #13
function ajaxRefresh() {
  $.ajax({
    url: '../intra/', data: {p: 's', a: 'open', c: '" & c & "', h: '" & h & "'},
    beforeSend: function(){
      window.clearInterval(intval);
      $("#timerimg").attr('src', 'img/icons/loading.gif');
    },
    success: function(result){
      $('body').html(result);
    },
    complete: function(){
    $("#timerimg").attr('src', 'img/icons/stop.gif');
      intval = setInterval('ajaxRefresh()', 5000);
    }
  })
};
$(document).ready(function() {
  intval = setInterval('ajaxRefresh()', 5000);
});


Jeg vil tro dette vil give det rigtige resultat.

Bemærk at jeg har erstattet din document.getelementbyid med jQuery syntax.

# står for ID (. står for class) og her skal så bruges .attr('din attribut', 'ny værdi').
Avatar billede Slettet bruger
07. september 2011 - 12:54 #14
Så det jeg havde lavet, var ikke helt hen i vejret :)

Var det muligt at den i success kan tjekke om der er nogen dialog-bokse åbne inden den smider resultatet i body, dvs. hvis der er nogle åbne, gør den intet og hvis der ikke er nogle åbne, overskriver den body med resultatet.

Lige så vel benytter jeg jo så ikke længere xmlhttp, så jeg kan i dialog-boksene ikke længere benytte
open: function() { window.clearInterval(intval); if (xmlhttp) xmlhttp.abort(); }

Kan jeg da skifte if sætningen ud med en der matcher .ajax sætningen? :)
Avatar billede heinzdmx Nybegynder
07. september 2011 - 13:57 #15
Ahh ja. Der var lige lidt jeg havde glemt.

var xmlhttp;

function ajaxRefresh() {
xmlhttp = $.ajax({
    url: '../intra/', data: {p: 's', a: 'open', c: '" & c & "', h: '" & h & "'},
    beforeSend: function(){
      window.clearInterval(intval);
      $("#timerimg").attr('src', 'img/icons/loading.gif');
    },
    success: function(result){
        if(!isOpen())
          $('body').html(result);
    },
    complete: function(){
    $("#timerimg").attr('src', 'img/icons/stop.gif');
      intval = setInterval('ajaxRefresh()', 5000);
    }
  })
};
$(document).ready(function() {
  intval = setInterval('ajaxRefresh()', 5000);
});

----

open: function() { window.clearInterval(intval); if (xmlhttp) xmlhttp.abort(); }

---

function isOpen()
{
    if ($("#dialogid").data("dialog").isOpen)
      return true;

    return false;
}





I det at $.ajax er en funktion der bruger et objekt der bygger på XMLHttpRequest, det kan du læse mere om her:

http://api.jquery.com/jQuery.ajax/
Avatar billede Slettet bruger
07. september 2011 - 14:58 #16
Det minder rigtig meget om det jeg selv fandt lidt frem til :)
Dog med lidt bedre detaljer fra din side af ;)

Dog kan jeg have utrolig mange bokse på siden, da disse oprettes dynamisk. Så derfor har jeg tilknyttet en class til alle boksene, for at kunne vælge dem vha. jquery ud fra klassen "ui-dialog".

Derfor hedder min isOpen() funktion:
if ($('.ui-dialog').data('dialog').isOpen) return true;


Men her får jeg så fejlen:
$(".ui-dialog").data("dialog") is undefined


Jeg kan dog ikke lige se fejlen? :s
Jeg prøvede også med:
$('.ui-dialog').dialog('isOpen')

Men denne melder true selvom jeg aldrig har åbnet et vindue..

Alle mine DIVs (dialogerne) ser således ud:
<div id='closeX' class='ui-dialog' title='Tiittlleeeenn' style='text-align: center; display: none;'></div>

hvor X i id'et selvfølgelig aldrig er det samme for hver dialog-boks..

Derfor er jeg lidt bange for, at det er måden hvorpå jeg kalder alle dialogboksene med den klasse, som er forkert?
Avatar billede heinzdmx Nybegynder
07. september 2011 - 15:05 #17
Det her er et bud og slet ikke testet:

$('.ui-dialog').each(function()
{
  if ($(this).data('dialog').isOpen)
  return true;
}
Avatar billede heinzdmx Nybegynder
07. september 2011 - 15:06 #18
Glemte lige et ); til sidst i eksemplet

så sidste linje skal være });
Avatar billede Slettet bruger
07. september 2011 - 15:30 #19
Kan sagtens se idéen :)

Men:
$(this).data("dialog") is undefined

:(
Avatar billede heinzdmx Nybegynder
07. september 2011 - 15:42 #20
Du skal åbenbart i stedet bruge, den du i forvejen har fundet:

$(this).dialog("isOpen")

Sammen med .each
Avatar billede Slettet bruger
07. september 2011 - 16:35 #21
Okay, måde hvorpå den finder ud af class'erne er nu korrekt.
Dvs jeg har brugt følgende to for nemmere, at kunne redigere hvad der skal ske når en dialog-boks åbner og lukker:
$('.ui-dialog').each( function() {
  $(this).bind('dialogopen', function() {
    window.clearTimeout(intval);
    if(xmlhttp) xmlhttp.abort();
  })
});
$('.ui-dialog').each( function() {
  $(this).bind('dialogclose', function() {
    intval = window.setTimeout('ajaxRefresh()', 5000);
  })
});

xmlhttp.abort(); virker perfekt.
window.clearTimeout(intval); virker slet ikke :(
Forresten, jeg har brugt timeout istedet for interval, da timeout-tidspunkter reagerer 100% som jeg gerne vil have det, dog med dén lille detalje, at jeg clearTimeout åbenbart ikke virker :/

Desuden, så virker vores isOpen funktion heller ikke efter hensigten :/ Der er ingen fejlmeddelelser, men selv udskriver stadig ajax-resultatet selvom der er en dialog-boks åben..

Hvis vi får de to detaljer på plads, så kører systemet 100%! :)
Ville det være en hjælp, hvis jeg postede AL den relevante kode indtil videre?
Avatar billede heinzdmx Nybegynder
07. september 2011 - 16:47 #22
For timeout hedder den i stedet
clearTimeout();



Tror ikke du behøver at poste al koden.


function IsDialogOpen()
{
  var value = false;
  $('.ui-dialog').each(function()
  {
      if ($(this).dialog("isOpen"))
        value = true;
  }

  return value;
}


Hvis det ikke virker, så må du finde en browser med en konsol (f.eks. Chrome) og se hvilken linje fejlen ligger på.
Avatar billede heinzdmx Nybegynder
07. september 2011 - 16:50 #23
Jeg skal vist lære at læse de post der er, kan se du allerede bruger clearTimeout


På følgende eksempel bruges window. slet ikke:
http://www.hscripts.com/tutorials/javascript/clear-timeout.php

Så hvad med at prøve uden?
Avatar billede Slettet bruger
07. september 2011 - 17:24 #24
function isDialogOpen() {
  var value = false;
  $('.ui-dialog').each(function() {
    if ($(this).dialog('isOpen'))
      value = true;
  });
  return value;
};


Den melder ingen fejl, men nu melder den åbenbart altid true, da den ikke erstatter teksten til trods for, at ingen dialoger er åbne :/

ajax koden er følgende:
function ajaxRefresh() { xmlhttp = $.ajax({ url: '../intra/', data: {p: 's', a: 'open', c: '" & c & "', h: '" & h & "'}, beforeSend: function() { stopTimer(); $('#timerimg').attr('src', 'img/icons/loading.gif'); }, success: function(result) { if(!isDialogOpen()) $('body').html(result); }, complete: function() { $('#timerimg').attr('src', 'img/icons/stop.gif'); } }) };
Avatar billede heinzdmx Nybegynder
07. september 2011 - 18:23 #25
Ifølge
http://www.sikosoft.com/item/having_trouble_with_jquerys_dialogisopen

Er der et problem der gør at man kun kan stole på resultat hvis den ikke er åben.


Hvilken version af jQuery UI bruger du?
Avatar billede Slettet bruger
07. september 2011 - 19:01 #26
Haha, jeg fandt samme side og løste problemet på samme måde som ham.
Nemlig ved at sige if ($(this).dialog('isOpen') == true) value = true;

Jeg tror, at jeg er nået til det punkt hvor alle funktionerne virker som de skal.

MEN! Lige nu får jeg en fejl der siger:
Avatar billede heinzdmx Nybegynder
07. september 2011 - 19:08 #27
Fejlen minder rimelig meget om den her fejl, prøv at se om du selv kan finde den:

http://stackoverflow.com/questions/1805121/this-call-is-not-a-function
Avatar billede Slettet bruger
07. september 2011 - 19:20 #28
Jeg har desværre også kigget på dennes problemstilling, men kan ikke finde fejlen :/
Når siden loader første gang, er der intet galt og alle dialogbokse virker, men så snart ajax har kørt igennem 1 gang laver den fejlen så snart siden loades igen, og ingen dialogbokse virker herefter. Og så forsætter ajax jo selvfølgelig bare hvert 5. sekund og den melder samme fejl hver gang siden loades.

For en god ordens skyld, poster jeg lige al koden vi er nået frem til indtil videre:
<script type='text/javascript'>
  var xmlhttp;
  function init() {
    $('#dialog:ui-dialog').dialog('destroy');
    $('#talksX').dialog({ height: 430, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#talksXOpener').click(function() { $('#talksX').dialog('open'); return false; });
    $('#talksXCloser').click(function() { $('#talksX').dialog('close'); return false; });
    $('#closeX').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#closeXOpener').click(function() { $('#closeX').dialog('open'); return false; });
    $('#closeXCloser').click(function() { $('#closeX').dialog('close'); return false; });
    $('#delX').dialog({ height: 200, width: 400, modal: true, autoOpen: false, hide: 'blind', show: 'blind' });
    $('#delXOpener').click(function() { $('#delX').dialog('open'); return false; });
    $('#delXCloser').click(function() { $('#delX').dialog('close'); return false; });
  };
  $('.ui-dialog').each( $(this).bind('dialogopen', function() { stopTimer(); }));
  $('.ui-dialog').each( $(this).bind('dialogclose', function() { startTimer(); }));
</script>

<script type='text/javascript'>")
  function startTimer() { intval = setTimeout('ajaxRefresh()', 5000); };
  function stopTimer() { clearTimeout(intval); if(xmlhttp) xmlhttp.abort(); };
  function isDialogOpen() { var value = false; $('.ui-dialog').each(function() { if ($(this).dialog('isOpen') == true) value = true; }); alert(value); return value; };
  function ajaxRefresh() { xmlhttp = $.ajax({ url: '../intra/', data: {p: 's', a: 'open', c: 'X', h: 'X'}, beforeSend: function() { stopTimer(); $('#timerimg').attr('src', 'img/icons/loading.gif'); }, success: function(result) { if(!isDialogOpen()) $('body').html(result); }, complete: function() { $('#timerimg').attr('src', 'img/icons/stop.gif'); } }) };
  $(document).ready(function() { startTimer(); });
</script>

<a href='java script:void(0)' id='closeXOpener' title=''><img src='img/icons/accept.gif' /></a>
<div id='closeX' class='ui-dialog' title='Hej """ & fullname & """' style='text-align: center; display: none;'></div>
<a href='java script:void(0)' id='openXOpener' title=''><img src='img/icons/accept.gif' /></a>
<div id='openX' class='ui-dialog' title='Hej """ & fullname & """' style='text-align: center; display: none;'></div>
<a href='java script:void(0)' id='talksXOpener' title=''><img src='img/icons/accept.gif' /></a>
<div id='talksX' class='ui-dialog' title='Hej """ & fullname & """' style='text-align: center; display: none;'></div>
Avatar billede heinzdmx Nybegynder
07. september 2011 - 19:45 #29
Mit umiddelbare gæt vil være at du prøver at erstatte hele din body hvor du samtidigt har din dialog-bokse, dette gør så at du fjerner dem uden at have fortalt objekterne med dialogboksene at de er væk og derved får du en fejl.

Mit bud vil være at du laver en <div id="ajaxcontent"> lige efter body og så skal alle dine dialog-bokse så være efter at den div er lukket. Så ændre du din funktion fra:

$('body').html(result);


Til:

$('#ajaxcontent').html($("#ajaxcontent",result));


Der i stedet finder id'en i siden og så så erstatter din div med indholdet af den downloaded div med det id.
Avatar billede Slettet bruger
07. september 2011 - 20:57 #30
Mener du her alle DIVsne eller blot jQuery koden til dem?
For at lægge dem alle udenfor "siden" er umuligt, da de generes dynamisk vha. asp i en lang, lang løkke :)
Avatar billede heinzdmx Nybegynder
07. september 2011 - 21:06 #31
Jeg tænker lidt ala:


<html><head>... indhold ...</head>

<body>

  <div id="ajaxcontent"> En hel masse indhold</div>
 
  <!-- her er dine dialogbokse -->

</body></html>
Avatar billede Slettet bruger
07. september 2011 - 22:19 #32
Det er desværre en løsning som ikke kan lade sig gøre, da jeg så skal igennem en lang løkken op til flere gange, og så vil siden fungere langsommere.. Dvs, jo det kan godt lade sig gøre, men er ikke optimalt :/

MEN MEN MEN :)
Ved at sidde og prøve mig frem, fandt jeg ud af, at problemet lå i:
  $('.ui-dialog').each( $(this).bind('dialogopen', function() { stopTimer(); }));
  $('.ui-dialog').each( $(this).bind('dialogclose', function() { startTimer(); }));


Så jeg fjernede denne og gjorde istedet open og close til en del af dialogen til at starte med.. og det virkede sgu! :)

Så nu virker det hele perfekt! :)

Så er mit næste skridt, at opdatere database vha. jquery.ajax() ud fra en form :)
Men det prøver jeg lige, at lege lidt med selv inden jeg spørger mig frem :)

Du har været en fantastisk hjælp! Mange tak!!

Og her er dine velfortjente points også! :)
Avatar billede heinzdmx Nybegynder
07. september 2011 - 22:22 #33
Det var ellers noget af en omgang, men lækkert at det spiller nu :)
Avatar billede Slettet bruger
07. september 2011 - 22:47 #34
Ja sjældent har jeg været med i en tråd på eksperten der har været SÅ lang :)
Så derfor er jeg også taknemmelig over din tid og hjælp :)
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