좋아, 이것이 분명히 존재하지 않으므로, 나는 내 자신의 솔루션을 만들었습니다. 누구든지 jQuery의 iframe에 게시하려는 경우 여기에서 공유합니다.
JS 함수/ 클래스 유사 :
function iframeform(url)
{
var object = this;
object.time = new Date().getTime();
object.form = $('<form action="'+url+'" target="iframe'+object.time+'" method="post" style="display:none;" id="form'+object.time+'" name="form'+object.time+'"></form>');
object.addParameter = function(parameter,value)
{
$("<input type='hidden' />")
.attr("name", parameter)
.attr("value", value)
.appendTo(object.form);
}
object.send = function()
{
var iframe = $('<iframe data-time="'+object.time+'" style="display:none;" id="iframe'+object.time+'"></iframe>');
$( "body" ).append(iframe);
$( "body" ).append(object.form);
object.form.submit();
iframe.load(function(){ $('#form'+$(this).data('time')).remove(); $(this).remove(); });
}
}
그런 다음 임시 iframe에 양식을 보내야 할 때 :
var dummy = new iframeform('server.php');
dummy.addParameter('type','test');
dummy.addParameter('message','Works...');
dummy.send();
이것은 server.php 예제 파일입니다.
if($_POST[type] == 'test')
{
header( 'Content-type: text/html; charset=utf-8' );
echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>';
echo str_pad('',4096); //fill browser buffer
for($i = 0; $i < 10; $i++)
{
echo '<script type="text/javascript">window.parent.console.log(\''.$_POST[message].'\');</script>';
ob_flush(); flush();
usleep(350000);
}
}
그리고 결과는 예상대로 다음과 같습니다.
메인 프레임의 콘솔은 PHP가 여전히 실행중인 경우에도 350ms가 즉시 시작하는 문자열 'Works ...'를 출력합니다.
PHP가 덩어리를 보내면 마무리가 끝나면 임시 양식과 임시 Iframe을 제거합니다.