Avatar billede wolfgang Praktikant
18. januar 2007 - 15:05 Der er 9 kommentarer og
1 løsning

Ajax - post url til asp

Hej Eksperter, Jeg er rendt panden mod muren, i forbindelse med et rating script jeg gerne vil lave.

Jeg mener det bør kunne gøres vha. noget ajax-funktionalitet
ved Onclick eventen kører jeg nedenstående js funktion og det her jeg gerne vil implementere ajax-tingen.

function sndRate(rating,reviewID) {
//Send data til server
// URL = postrating.asp?rating='rating'&reviewID='reviewID'

rating = rating * 25;
document.getElementById('current-rating_'+reviewID).style.width = rating+'px';
}

Hvordan skal jeg dog gribe det an?
Jeg håber at I kan hjælpe mig videre.

På forhånd tak.
Avatar billede wolfgang Praktikant
18. januar 2007 - 15:07 #1
asp-siden der sendes til, står naturligvis for at opdatere min database - den del virker fint.
Avatar billede olebole Juniormester
18. januar 2007 - 15:18 #2
<ole>

Et godt sted at starte er vel at lære lidt om AJAX - og her er dette link udmærket:
    http://developer.mozilla.org/en/docs/AJAX

Gå for alt i verden langt udenom w3schools.com's tutorial, da den ikke har ret meget med AJAX at gøre  =)

/mvh
</bole>
Avatar billede wolfgang Praktikant
18. januar 2007 - 15:30 #3
Tak for dit indlæg - Der er da en del der skal læses op på :)

Har du lyst til at poste et eksempel på en løsning på mit spørgsmål?
Avatar billede olebole Juniormester
18. januar 2007 - 15:34 #5
Njaahhh .... det giver hovedsageligt gamle spm. Prøv at bladre lidt tilbage i kategorien her. Jeg er på vej udaf døren  :o|
Avatar billede wolfgang Praktikant
18. januar 2007 - 17:23 #6
Jeg har søgt Eksperten tynd, før jg oprettede dette spørgsmål :(
Det er umiddelbart ikke noget, der er nævnt på Eksperten endnu.
Avatar billede madeindk Nybegynder
18. januar 2007 - 18:03 #7
Den tror jeg godt jeg kan lave til dig :-) Men det er nemmere hvis du angiver hele URL når du kalder funktion, altså fx.

<a href="#" onClick="ajaxRequest('postRating.asp?rating=<%= rating %>&reviewID=<%= reviewID %>','current-rating_<%= reviewID %>');">Dit rating link</a>

<script type="text/javascript">

function ajaxRequest(strAjaxURL, elementID)
{
    var xmlhttp = false;
   
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
      xmlhttp = false;
      }
    }
   
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }
   
    if (!xmlhttp && window.createRequest) {
        try {
            xmlhttp = window.createRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }
   
    var strURL = strAjaxURL + "&noCache=" + Math.random(); + "";
   
    xmlhttp.open("GET",strURL,true);
    xmlhttp.onreadystatechange = function()
    {
               
        // Hvis serveren giver resultat
        if (xmlhttp.readyState == 4)
        {               
          document.getElementById(elementID).style.width = rating+'px';
        }   
    }
    xmlhttp.send(null)
}

</script>
Avatar billede wolfgang Praktikant
18. januar 2007 - 22:38 #8
> madeindk. Mange tak for din løsning! Vil du ikke post et svar, så du kan få dine points?

Jeg endte med at bruge en anden løsning, men du skal belønnes for dit arbejde.
function sndRate(rating,reviewID) {
   
    var myConn = new XHConn();
   
    if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");

    var fnWhenDone = function (oXML) { alert(oXML.responseText); };
   
    myConn.connect("_includes/postReaderRating.asp", "POST", "rating="+rating+"&reviewID="+reviewID, fnWhenDone);
           
    rating = rating * 25;
    document.getElementById('current-rating_'+reviewID).style.width = rating+'px';

}
Avatar billede madeindk Nybegynder
18. januar 2007 - 23:57 #9
Ok, det var godt du fandt en løsning :-)

Her er mit svar.
Avatar billede olebole Juniormester
19. januar 2007 - 14:55 #10
I stedet for at bruge XMLHttpRequests kan du til en så enkel opgave sagtens bruge et alm. script-element ... og så kan browsere, der ikke understøtter XMLHttpRequests også være med (f.eks. lidt ældre Opera'er, m.fl.):

<script type="text/JavaScript">
function getDaServerShit(rating, reviewID) {
    var o = oScrTempl.cloneNode(true);
    o.setAttribute("src", url + "?rating=" + rating + "&reviewID=" + reviewID + "&u=" + new Date().getTime());
    while (oScrLoader.firstChild) oScrLoader.removeChild(oScrLoader.firstChild);
    oScrLoader.appendChild(o);
}

var oScrLoader = oScrTempl = null;
var url = "http://www.domain.dk/sti/til/ajax.php";

window.onload = function(){
    oScrLoader = document.getElementById("scrLoader");
    oScrTempl = oScrLoader.getElementsByTagName("script")[0].cloneNode(true);
}
</script>



<div id="scrLoader" style="display:none">
<script type="text/JavaScript"></script>
</div>

Dit dokument 'ajax.php' udfører så database-handlinger, m.m. - og du udskriver et alm. JavaScript à la:

document.getElementById("<?=$_POST["elementID"]?>").style.width = <?=$_POST["rating"]?> + "px";

- som så sætter den ønskede bredde på div'et  =)
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

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