---
title: "AJAX Problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/158623-ajax-problem"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Glitter"
published: "2007-03-27T10:07:29.000Z"
updated: "2007-03-27T14:53:37.000Z"
replies: 4
views: 355
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/158623-ajax-problem"
---

# AJAX Problem

## #1 — Glitter, 2007-03-27T10:07Z

Jag har gjort ett script med ajax som funkar i FF men inte i IE. Jag får "undefined" tillbaka av ajax funktionen och vet inte varför.

Koden:

```
function getElmById(aID){
    var element = document.getElementById ? document.getElementById(aID) : document.all[aID];
    return element;
}

function GetPage(url){
    var http = false;
    try {
        http = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            http = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                http = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                http = false;
            }
        }
    }
    
    var htmlstr;
    http.open("GET", url);
    http.onreadystatechange=function() {
        if(http.readyState == 4 && http.status == 200) {
            htmlstr = http.responseText;
        }
    }
    http.send(null);
    return htmlstr;
}

function VisaDomainInfo(DomainId){
    if (getElmById('d' + DomainId).innerHTML == ""){
        getElmById('d' + DomainId).innerHTML = GetPage("domaininfo.aspx?id=" + DomainId + "");
    } else {
        getElmById('d' + DomainId).innerHTML = "";
    }
}
```

'd' + DomainId är en \<DIV\> som jag fyller.

Testade att sätta en alert() på htmlstr i Getpage(url) och då får jag det jag vill ha av funktionen men det kan jag inte ha.

Tacksam för hjälp med lösningen.

Permalänk: https://www.webforum.nu/p/158623

## #2 — spango, 2007-03-27T10:17Z

Det beror på att XmlHttp-saken laddas asynkront, så du vet inte när onreadystatechange kommer att anropas. Det du får göra är att du från onreadystatechange anropar någon funktion som presenterar resultatet som du vill, typ:

```
function GetPage(url, callback){
    var http = false;
    try {
        http = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            http = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                http = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                http = false;
            }
        }
    }
    
    http.open("GET", url);
    http.onreadystatechange=function() {
        if(http.readyState == 4 && http.status == 200) {
            callback(http.responseText);
        }
    }
    http.send(null);
}
function VisaDomainInfo(DomainId){
    if (getElmById('d' + DomainId).innerHTML == ""){
        GetPage("domaininfo.aspx?id=" + DomainId + "", function (domainInfo){getElmById('d' + DomainId).innerHTML = domainInfo});
    } else {
        getElmById('d' + DomainId).innerHTML = "";
    }
}
```

Permalänk: https://www.webforum.nu/p/1951445

## #3 — Glitter, 2007-03-27T13:01Z

Det funkar bättre men när funktionen VisaDomainInfo(DomainId) har anropats anropas en liknande funktion som skall fylla en \<div\> som VisaDomainInfo(DomainId) har genererat och det funkar det inte. 
Felmeddelandet blir "Objekt krävs" vilket då måste innebära att den diven inte finns innan nästa funktion anropas och hur löser man det?

Jag testade att lägga det anropet till den andra funktionen på den sidan jag jag hämtar med ajax med då verkar det som skriptet inte körs.

Permalänk: https://www.webforum.nu/p/1951479

## #4 — spango, 2007-03-27T14:21Z

> **Glitter skrev:**
>
> Det funkar bättre men när funktionen VisaDomainInfo(DomainId) har anropats anropas en liknande funktion som skall fylla en \<div\> som VisaDomainInfo(DomainId) har genererat och det funkar det inte.

Nej, och det är inte så konstigt eftersom allt som förlitar sig på resultatet från en XmlHttp-request måste göras i callbacken, d.v.s. anropas direkt eller indirekt från onreadystatechange eftersom exekveringen som initierar requesten inte väntar på att requesten ska fullföljas. Så det du får göra är att lägga till ett anrop av den funktionen i denna kodsnutt:

```
GetPage("domaininfo.aspx?id=" + DomainId + "", function (domainInfo){getElmById('d' + DomainId).innerHTML = domainInfo});
```

så att det blir typ...

```
var callback = function (domainInfo){
    getElmById('d' + DomainId).innerHTML = domainInfo;
    [B]AnropaDinAndraFunktionHär();[/B]
}
GetPage("domaininfo.aspx?id=" + DomainId + "", callback);
```

Permalänk: https://www.webforum.nu/p/1951504

## #5 — Glitter, 2007-03-27T14:53Z

ha ha ja det är klart...
tack för hjälpen

Permalänk: https://www.webforum.nu/p/1951532

---

Tråden på webben: https://www.webforum.nu/amne/javascript/158623-ajax-problem
