2009-07-02 10 views
1

Okay, habe ich diesen Code:Wie öffne ich eine Ajax-Anfrage in einem separaten Frame?

<script language="javascript" type="text/javascript"> 
<!-- 

function requestPage(page) { 

    var request = false; 

    try { 
     request = new XMLHttpRequest(); 
    } catch (e) { 
     try{ 
      request = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       request = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e) { 
      alert("Unable to complete your request."); 
      return false; 
      } 
     } 
    } 

    request.onreadystatechange = function() { 
     if(request.readyState == 4) { 
      if(request.status == 200) {  
       document.getElementById('content').innerHTML = request.responseText; 
      } 
     } 
    } 

    request.open("GET", "include.php?page=" + page, true); 
    request.send(null); 
} 

//--> 
</script> 

dann passieren offensichtlich macht es etwa so:

<a onclick="javascript:requestPage('red_the_clown')"><li>Red</li></a> 
<div id="content"><?php include('index2.php'); ?></div> 

Ich habe ziehen versucht, meine Haare zu arbeiten, wie ein separater Rahmen Ziel statt der aktuelle Rahmen. Das heißt, das #content-div wird in _main sein, aber es wird von einem Frame aus aufgerufen.

Wer hat irgendwelche Ideen?

Vielen Dank im Voraus!

Ryan

+0

Ist 'Inhalt' der Frame, auf den Sie zugreifen möchten? Sie sagen also dass document.getElementById ('content'). InnerHTML = request.responseText; funktioniert nicht? – bobbyalex

Antwort

1

Sie wollen das Dokument zuzugreifen innerhalb eines Rahmens?

oben bezieht sich auf den obersten Rahmen. Eltern bezieht sich auf eine Ebene höher.

Ihre Javascript oben müssen möglicherweise nur eine Änderung:

top.document.getElementById('content').innerHTML = request.responseText; 

Allerdings werden Sie beide Frames müssen aus der gleichen Domäne sein, sonst werden Sie von Browser-Sicherheit eingeschränkt werden.

+0

gut, wenn er x-Domain-Probleme hat, ist er ganz SOL trotzdem – annakata

+0

ohh top! das ist großartig, vielen Dank, es hat perfekt funktioniert. –

0

so haben Sie einen Iframe mit der ID "_main"?

wie etwa

window.frames["_main"].document.getElementById("content").innerHTML = request.responseText; 
+0

keine Entschuldigung durch main ich meine Eltern (oder oben, ich bin mir nicht sicher über den Unterschied) –

+0

lassen Sie mich klarstellen, der Link, der anfordern ist in einem Rahmen, der Inhalt div, der ausgefüllt werden muss, ist nicht window.frames [" _parent "]. document.getElementById (" Inhalt "). innerHTML = request.responseText; funktioniert nicht –

Verwandte Themen