Avatar billede bodyguard Nybegynder
20. september 2009 - 19:07 Der er 5 kommentarer

Når et punkt i Select vælges skal en tekst indsættes i en SPAN

Hej Exp.

Jeg mangler et script med et select hvor jeg kan bruge feldtet "overskrift" fra min database og når man vælger et punkt indsætter den teksten fra feldtet "beskrivelse" i et span.
Avatar billede olebole Juniormester
20. september 2009 - 19:59 #1
<ole>

Du kan prøve noget à la:


<script type="text/javascript">
var sAX="MSXML2.XMLHTTP.6.0 MSXML2.XMLHTTP.3.0 Msxml2.XMLHTTP Microsoft.XMLHTTP";
(function(){var x=window.XMLHttpRequest;if(!x){var o=s=null,a=sAX.split(" ");for(var i=0,j=a.length;i<j;s=a[i],i++){try{if(o=new ActiveXObject(s))break}catch(e){}}}window.XMLHttpRequest=x?x:o?function(){return new ActiveXObject(s)}:null;o=null;sAX=undefined})();

function foo(oSel, sDisplId) {
    var oDispl = document.getElementById(sDisplId);
    oDispl.firstChild.nodeValue = "Henter data ...";
    var oHttp = new XMLHttpRequest();
    var sQuery = "contxt=getSomething&value=" + encodeURIComponent(oSel.value);
    oHttp.open("post", "/sti/til/fil.asp", true);
    oHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    oHttp.onreadystatechange = reqCallback;
    oHttp.send();
   
    function reqCallback() {
        if (oHttp.readyState<4) return;
        eval("var oResp = " + oHttp.responseText);
        if (oResp.error) {
            oDispl.firstChild.nodeValue = "Der opstod en fejl: " + oResp.error;
        }
        else if (oResp.message) {
            oDispl.firstChild.nodeValue = oResp.message;
        }
        oHttp = oResp = null;
    }
}
</script>

<select onchange="foo(this, 'selDisplay')">
    <option value="0">Vælg ...</option>
    <option value="val_A">Option A</option>
    <option value="val_B">Option B</option>
    <option value="val_C">Option C</option>
    <option value="val_D">Option D</option>
</select>
<span id="selDisplay">&nbsp;</span>


Så kan du i ASP dokumentet finde POST variablerne contxt, som indeholder værdien getSomething og value, som indeholder værdien af den valgte option. Den første variabel kan du bruge til at lade filen vælge, hvad den skal foretage sig - og hvad der skal returneres.

Inden du returnerer noget, sætter du en header, der sætter Cotent-Type til application/json. Derefter udskriver du i tilfælde af fejl en JSON streng på formen:

{"error":"Hov, der skete dette eller hint"}

- og ellers:

{"message":"En eller anden besked til brugeren"}


/mvh
</bole>
Avatar billede bodyguard Nybegynder
20. september 2009 - 21:20 #2
Hej Bole,

Hvis jeg indsætter scriptet på f.eks. "opret.asp" og vil hente data fra "ajax.asp" vil det så ik være bedst hvis jeg istedet for value="Val_A" bruger ID.

Så når man vælger et punkt spørges der til "ajax.asp" om at returnere objRec("tekst") fra tabel "Forseelse" med ID nr....


Kan jeg få dig til at lave et oplæg til hvordan "ajax.asp" kan se ud gerne fra <html> til </html> ?
Avatar billede olebole Juniormester
20. september 2009 - 23:21 #3
Jo, værdierne  er blot eksempler - og ID i databasen ville være oplagt. Det er ekstremt lang tid siden, jeg har skrevet ASP, så jeg vil nødig skrive koden  =)

Du skal ikke have noget somhelst HTML i ajax.asp. Dokumentet skal blot modtage variablerne, som ligger i request.form("contxt") og request.form("value") - hvor den sidste så vil være ID'et fra select elementet.

Derefter kalder du databasen og lægger resultatet/teksten i en variabel minVar. Så sætter du en header og printer ud med:

Response.ContentType = "application/json"
Response.Write "{""message"":""" & minVar & """}"

... intet andet  =)
Avatar billede bodyguard Nybegynder
16. oktober 2009 - 16:26 #4
Hej Ole Bole,

Undskyld det sene svar, men jeg synes ikke rigtigt der sker noget, når jeg vælger en option skriver den "Henter data..." men så sker der ikke mere.

Måske er der en fejl i min Ajax?

AJAX_PARAGRAF.ASP
<!--#include file="../forbindelse.asp"-->
<%

    strSQL = "SELECT * FROM forseelser WHERE id = "& Request.form("value") &""
    objRec.Open strSQL, objConn, 3, 1, 1
   
    If not (objRec.BOF Or objRec.EOF) Then
        minVar = objRec("tekst")
        Response.ContentType = "application/json"
        Response.Write "{""message"":""" & minVar & """}"
    Else
        minVar = "Der er opst&aring;et en fejl!"
        Response.ContentType = "application/json"
        Response.Write "{""error"":""" & minVar & """}"
    End If
%>
<!--#include file="../forbindelse_luk.asp"-->
Avatar billede bodyguard Nybegynder
16. maj 2010 - 20:26 #5
Ole skal vi lukke...
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