Frage

Ich möchte Informationen zu einem Iframe per Post zu übergeben. (Könnte Jquery oder Javascript sein, der die Post ausführt, spielt es keine Rolle).

Die Informationen können nicht über Abfragezeichenfolgeflag gesendet werden, wie ich die Seite, um die Art und Weise haben keinen Zugang zu ändern, indem der iframe gebracht ist.

Diese Daten werden das Layout der Inhalte in der iframe bestimmen, so wie kann ich es machen, so dass nach der Post des iframe gesendet wird aktualisiert wird? (Ggf. auffrischen?)

War es hilfreich?

Lösung

Ich schrieb eine Blog-Post über diese mit jQuery tun eine Datei in einem versteckten iframe hochzuladen. Hier ist der Code:

Hier ist der HTML-Code für das Formular:

<div id="uploadform">
<form id="theuploadform">
<input type="hidden" id="max" name="MAX_FILE_SIZE" value="5000000" >
<input id="userfile" name="userfile" size="50" type="file">
<input id="formsubmit" type="submit" value="Send File" >
</form>

Die DIV, in dem erlauben jQuery die iframe erstellen Sie es mit ein wenig CSS verstecken kann:

<div id="iframe" style="width:0px height:0px visibility:none">
</div>

Die DIV, in dem die Ergebnisse des Rückrufs zeigen:

<div id="textarea">
</div>

Der jQuery-Code:

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){
    $("#formsubmit").click(function() {
        var userFile = $('form#userfile').val();
        var max = $('form#max').val();
        var iframe = $( '<iframe name="postframe" id="postframe" class="hidden" src="about:none" />' );
        $('div#iframe').append( iframe );

        $('#theuploadform').attr( "action", "uploader.php" )
        $('#theuploadform').attr( "method", "post" )
        $('#theuploadform').attr( "userfile", userFile )
        $('#theuploadform').attr( "MAX_FILE_SIZE", max )
        $('#theuploadform').attr( "enctype", "multipart/form-data" )
        $('#theuploadform').attr( "encoding", "multipart/form-data" )
        $('#theuploadform').attr( "target", "postframe" )
        $('#theuploadform').submit();
        //need to get contents of the iframe
        $("#postframe").load(
            function(){
                iframeContents = $("iframe")[0].contentDocument.body.innerHTML;
                $("div#textarea").html(iframeContents); 
            } 
        );
        return false;
    });
});

</script>

ich eine PHP-Anwendung wie diese uploader.php verwendet, um etwas mit dem zu tun, Datei:

<?php

$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$maxfilesize = $_POST[MAX_FILE_SIZE];

if ($maxfilesize > 5000000) {
//Halt!
   echo "Upload error:  File may be to large.<br/>";
   exit();
}else{
    // Let it go
}

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   print('File is valid, and was successfully uploaded. ');
} else {
   echo "Upload error:  File may be to large.<br/>";
}

chmod($uploadfile, 0744);
?>

Es gibt mehr gibt, als Sie brauchen, aber es stellt das Konzept in jQuery.

Andere Tipps

Ich habe den Code nicht praktisch, aber mein Team erreicht dies rein in Javascript. Soweit ich mich erinnere ging es so etwas wie folgt aus:

function postToPage() {
  var iframe = document.getElementById('myIFrame');

  if (iframe) {
    var newForm = '<html><head></head><body><form...> <input type="hidden" name="..." value="..." /> </form><script type=\"text/javascript\">document.forms[0].submit();</scrip' + 't></body></html>';

    iframe.document.write(newForm);  //maybe wrong, find the iframe's document and write to it
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top