Как вы отправляете сообщение в iframe?

Как вы отправляете данные в iframe?

Ответ 1

Зависит от того, что вы подразумеваете под "почтовыми данными". Вы можете использовать атрибут HTML target="" в теге <form />, поэтому он может быть таким же простым, как:

<form action="do_stuff.aspx" method="post" target="my_iframe">
  <input type="submit" value="Do Stuff!" />
</form>

<!-- when the form is submitted, the server response will appear in this iframe -->
<iframe name="my_iframe" src="not_submitted_yet.aspx"></iframe>

Если это не так, или вы после чего-то более сложного, отредактируйте свой вопрос, чтобы включить более подробную информацию.

Известная ошибка с Internet Explorer, которая возникает только в том случае, если вы динамически создаете свои фреймы и т.д., используя Javascript (здесь

default.asp

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>Form Iframe Demo</title>
  </head>
  <body>
  <form action="do_stuff.asp" method="post" target="my_frame">
    <input type="text" name="someText" value="Some Text" />
    <input type="submit" />
  </form>
  <iframe name="my_frame" src="do_stuff.asp">
  </iframe>
  </body>
</html>

do_stuff.asp

<%@Language="JScript"%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>Form Iframe Demo</title>
  </head>
  <body>
  <% if (Request.Form.Count) { %>
  You typed: <%=Request.Form("someText").Item%>
  <% } else { %>
  (not submitted)
  <% } %>
  </body>
</html>

Мне было бы очень интересно услышать о любом браузере, который не правильно запускает эти примеры.

Ответ 2

iframe используется для встраивания другого документа внутри html-страницы.

Если форма должна быть отправлена ​​в iframe на странице формы, ее можно легко получить с использованием целевого атрибута тега.

Установите целевой атрибут формы в имя тега iframe.

<form action="action" method="post" target="output_frame">
    <!-- input elements here --> 
</form>
<iframe name="output_frame" src="" id="output_frame" width="XX" height="YY">
</iframe>           

Расширенное использование цели iframe
Это свойство также можно использовать для создания подобного опыта, особенно в таких случаях, как загрузка файлов, и в этом случае, когда становится обязательным представлять форму, чтобы загрузить файлы

В iframe можно задать ширину и высоту 0, и форма может быть отправлена ​​с целевым значением, установленным в iframe, и диалогом загрузки, открытым перед отправкой формы. Таким образом, он издевается над ajax-управлением, поскольку элемент управления все еще остается на входной форме jsp, при этом открывается диалоговое окно загрузки.

Exmaple

<script>
$( "#uploadDialog" ).dialog({ autoOpen: false, modal: true, closeOnEscape: false,                 
            open: function(event, ui) { jQuery('.ui-dialog-titlebar-close').hide(); } });

function startUpload()
{            
    $("#uploadDialog").dialog("open");
}

function stopUpload()
{            
    $("#uploadDialog").dialog("close");
}
</script>

<div id="uploadDialog" title="Please Wait!!!">
            <center>
            <img src="/imagePath/loading.gif" width="100" height="100"/>
            <br/>
            Loading Details...
            </center>
 </div>

<FORM  ENCTYPE="multipart/form-data" ACTION="Action" METHOD="POST" target="upload_target" onsubmit="startUpload()"> 
<!-- input file elements here--> 
</FORM>

<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;" onload="stopUpload()">   
        </iframe>

Ответ 3

Я бы предположил, что вы динамически генерируете форму внутри iframe, а затем публикуете это.

Здесь обсуждается это для страницы верхнего уровня:
Запрос на отправку JavaScript, как отправить форму

Вы можете изменить его, чтобы создать форму внутри iframe.

Ответ 4

Эта функция создает временную форму, а затем отправляет данные с помощью jQuery:

function postToIframe(data,url,target){
    $('body').append('<form action="'+url+'" method="post" target="'+target+'" id="postToIframe"></form>');
    $.each(data,function(n,v){
        $('#postToIframe').append('<input type="hidden" name="'+n+'" value="'+v+'" />');
    });
    $('#postToIframe').submit().remove();
}

target - это "имя" attr целевого iFrame, а данные - объект JS:

data={last_name:'Smith',first_name:'John'}