webForumDet fria alternativet

Ajax och ska ladda in en flashfil, funkar ej.

JavaScript

4 svar · 552 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Jag har en massa tumnaglar man kan klicka på och då ska bilden laddas in i en annan div med ajax, det funkar bra när det är bara bilder.
Men vissa tumnaglar pekar på en video... och den ska laddas in så här:

<div id="container">
		<a href="http://www.macromedia.com/go/getflashplayer">Ladda ner Flashplayer</a> för att kunna se videon.
		<script type="text/javascript" src="swfobject.js"></script>
		<script type="text/javascript">
			var s1 = new SWFObject("mediaplayer.swf","mediaplayer","361","200","8");
			s1.addParam("allowfullscreen","true");
			s1.addVariable("width","361");
			s1.addVariable("height","200");
			s1.addVariable("file","flvfil.flv");
			s1.addVariable("image","flvfil.jpg");		
			s1.write("container");
		</script>
</div>

Men det funkar inte, det enda som står är "Ladda ner Flashplayer</a> för att kunna se videon."

Om jag går direkt till filen som genererar ut det är (getimage.php) så laddas videon in.

Så här ser ajaxkoden ut:

function createXMLHttpRequest() {
  var ua;
  if(window.XMLHttpRequest) {
    try {
      ua = new XMLHttpRequest();
    } catch(e) {
      ua = false;
    }
  } else if(window.ActiveXObject) {
    try {
      ua = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
      ua = false;
    }
  }
  return ua;
}

var req = createXMLHttpRequest();

var oldid = 0;

function sendRequest(url) {
  req.open('get', url);
  req.onreadystatechange = handleResponse;
  req.send(null);
}

function loadbidrag(idnr) {
	req.open("GET", "includes/getimage.php?id="+escape(idnr), true);
	document.getElementById('thumbimageid'+idnr).style.border = '2px solid #c51108';
	//document.getElementById('thumbimageid'+idnr).style.padding = '2px';
	if(oldid == 0) {
		oldid = idnr;
	} else {
		document.getElementById('thumbimageid'+oldid).style.border = '2px solid transparent';
		oldid = idnr;
	}
	
	req.onreadystatechange = handleResponse;
	req.send(null);
} 

function handleResponse() {
  if(req.readyState == 4){
    var response = req.responseText;
    document.getElementById('largeimage').innerHTML = response;
  } else {
		document.getElementById('largeimage').innerHTML = "Laddar...";
  }
}

Hur ska jag lyckas med detta? Ibland är det bilder och ibland video, dessa hämtas från en mysql databas och det är en massa andra grejer också som visas tillsammans med videon och bilderna.

Men flashfilen vill inte laddas in alls. Har testat absoluta sökvägar till javascriptet och mediaspelaren också men inget funkar. Går det inte att göra så här?

Jag antar det blir något galet på denna rad:
s1.write("container");

När flashspelaren ska skrivas till id=container.

Medlem sedan feb. 20034 441 inlägg
#2

Har dykt på det här vid något tillfälle.
Kan ev. bero på att det som laddas in inte "hittar" swfobject.js.

Du kan testa att lägga koden från swfobject direkt i innehållet som laddas in via ajax.

Medlem sedan apr. 2008137 inlägg
#3

Det känns lite märkligt att injecta scripttaggar via innerHTML.
Du borde ha specialhantering av flashdatan och anropa swfobjectkoden direkt istället.

Medlem sedan juni 20019 519 inlägg
#4

Ajax kan inte "generera" script taggarna... dokumentet är redan utskriven med alla skript. det du får göra är att göra en eval() på innerHTML av dina response texter vid just <script> taggen för att läsarna skall ladda in det.

Medlem sedan apr. 2001762 inlägg
#5

Tackar för alla svar, kom också fram till att det blev strul med just swfobject etc. Löste det med en iframe istället, funkar men inte lika bra :)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)