---
title: "xmlhttp.responseText till variabel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/191213-xmlhttp-responsetext-till-variabel"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "kimmy"
published: "2013-03-12T10:06:16.000Z"
updated: "2013-04-03T16:52:12.000Z"
replies: 14
views: 1396
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/191213-xmlhttp-responsetext-till-variabel"
---

# xmlhttp.responseText till variabel

## #1 — kimmy, 2013-03-12T10:06Z

Hej!

Jag har kört fast lite.

Jag använder mej av ajax för att försöka få tillbaka ett värde från ett php-script och sedan lägga det i ett JavaScript variabel.

Jag får ett värde tillbaka, för det visas i div-tagen som heter "list". (den koden ska bort sen)
Men vill som sagt ha in värdet i ett JavaScript variabel.

Här är koden. Vad är felet?

```
var test;

function load_program(date)

{
 if (window.XMLHttpRequest)
   {
   xmlhttp=new XMLHttpRequest();
   }
 else
   {
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
        test = "xmlhttp.responseText";
        document.getElementById("list").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","modul/modul_getprogramid.php?program="+window.programnamn+"&date="+date,true);
 xmlhttp.send();
 
 alert (test);
```

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

## #2 — @nders, 2013-03-12T10:08Z

Du ska inte ha citationstecken runt *xmlhttp.responseText*.

```
...
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
        test = xmlhttp.responseText;
        document.getElementById("list").innerHTML=test;
     }
...
```

mvh

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

## #3 — kimmy, 2013-03-12T10:10Z

Just det, testade bara om det fungerade med, glömde plocka bort dem.
Men de fungerar inte utan heller. :(

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

## #4 — @nders, 2013-03-12T10:47Z

Jag tror att det kanske är scopet för din variabel som är fel - den lever nog bara i if-satsen. Prova att deklarera variabeln överst i funktionen:

```
function load_program(date)
{
 var test;
 if (window.XMLHttpRequest)
...
```

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

## #5 — kimmy, 2013-03-12T10:53Z

Testat det med. :/

Får ut texten "undefined" bara

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

## #6 — @nders, 2013-03-12T10:57Z

Jag ber om ursäkt - jag såg inte att du deklarerat variabeln allra överst.

Men när jag tänker efter beror det säkert på att det är *xmlhttp.onreadystatechange* som äger värdet - och eftersom ajax är asynkront försöker du nog använda värdet innan ajax-koden har körts färdigt och fyllt variabeln med värdet. För att kontrollera om så är fallet kan du testa med:

```
window.setTimeout("alert(test);", 1000);
```

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

## #7 — voigtann1, 2013-03-12T12:41Z

Du skriver att koden skall vara async så test kommer aldrig sättas till vad du vill:

```
function load_program(date) {
	var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	var test;

	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			test = xmlhttp.responseText;
			document.getElementById("list").innerHTML = xmlhttp.responseText;
		}
	}
	xmlhttp.open("GET","modul/modul_getprogramid.php?program="+window.programnamn+"&date="+date, [b]false[/b]);
	xmlhttp.send();
	alert(test);
}
```

borde ge dig alert med rätt värde: <http://voigt.se/sandbox/wf/ajax/>

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

## #8 — jme, 2013-03-12T22:41Z

Jag skulle kika på jQuery och dess ajax-support istället för att leka med XMLHttpRequest. Då slipper du även att behöva försöka få det att fungera med alla webbläsare.

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

## #9 — kimmy, 2013-04-02T21:55Z

Ja, de löste sig med de första svaret, men började snöa in mej lite på jquery vilket som va mycket lättare och framförallt mycket mindre kod.

Men jag måste vara en tomte, för jag fattar inte redigt här heller hur jag ska få in svaret i en variable??

Vill ha in ett datum som kommer tillbaka från php sidan in i en var?

```
function load_date(program) {
	
	$.get("modul/modul_getdate.php",{program:program},function(result){
		$("#load_dates").html(result);
	});
}
```

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

## #10 — voigtann1, 2013-04-03T04:31Z

echo date() i din modul_getdate.php fil

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

## #11 — kimmy, 2013-04-03T08:13Z

Jo, själva den delen fungerar. Jag får tillbaka ett värde i "result".
Men jag vill få in den i en variabel som går använda globalt.

Hur gör jag då?

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

## #12 — voigtann1, 2013-04-03T09:11Z

kolla in $.ajax metoden, du få ändra det till async till false, förstå dock inte varför du skall ha den globalt för du kommer inte direkt kunna använda den på ett globalt sätt, för om du aldrig kör din metod så kommer den globala variablen aldrig ändras, och om du använder variablen för att göra något annat så måste du ändå triggar den andra metoden som gör kanske din alert i ditt test. Jag hade gjort något i stil med: <http://voigt.se/sandbox/wf/ajax/index2.html>

Vad är det du vill göra med variablen? Varför skall den vara global?

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

## #13 — kimmy, 2013-04-03T15:35Z

Okey

Funktionen är att man ska kunna öppna en lista.
Först väljer man program, sen väljer man datum och när man har de två resultaten så ska man få fram ett program id.
Id:et vill jag sedan lägga i en variabel.

En funktion anropar då variabeln med id:et och öppnar listan för detta id.

Men vill också att andra funktioner ska kunna använda id:et, t.ex. när man ska lägga till nya rader i listan.

Sen kan program id:et ändras om man går tillbaka till startsidan och ändrar program eller datum.

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

## #14 — voigtann1, 2013-04-03T15:55Z

vad skall du ha programId till, du kommer vilja anropa en funktion för att få ut något mer ändå, så jag förstå inte alls varför du vill få ut den som en global variabel.

```
var publicID;
var load_date = function(program) {
	$.ajax("date.asp",{
		data: { "program": program },
		cache: false,
		async: false,
		success: function(data) {
			publicID = data;
		}
	});
};
```

är samma kod som den förra exemplet jag skrev (den utan jQuery)

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

## #15 — kimmy, 2013-04-03T16:52Z

Nu löste de sej. Tack!

Jag vill bara att andra JavaScript ska kunna använda sej av program id.
Detta för att slippa hela tiden att skicka program och datum för att få fram id, så gör man det en gång. 

Men nu funkar det :)

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/191213-xmlhttp-responsetext-till-variabel
