파일을 다운로드한 후 Ajax를 통해 다른 페이지로 리디렉션
엑셀 파일 다운로드를 위한 간단한 연락처 양식이 있습니다. 주요 문제는 아약스 로드 시 발생합니다.엑셀 파일을 다운로드한 후 사용자를 다음 페이지로 리디렉션하고 싶습니다.아래는 더미 데이터가 있는 제 코드입니다.
Ajax 코드..
$.ajax({
type: "POST",
url: "/site/ajaxexcel.php",
data: {'value':'send'},
cache: false,
success: function(html){
location.href = '<?php echo base_url()."/site/welcome.php" ?>';
}
});
그리고 나의ajaxexcel.php
코드:
<?php
$content= '<html xmlns:x="urn:schemas-microsoft-com:office:excel">
<head>
<!--[if gte mso 9]>
<xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>Sheet 1</x:Name>
<x:WorksheetOptions>
<x:Print>
<x:ValidPrinterInfo/>
</x:Print>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</x:ExcelWorkbook>
</xml>
<![endif]-->
</head>
<body><table class="table table-condensed table-striped table-hover table-bordered pull-left" id="myTable"><thead><tr><th>Rakesh</th><th>kumar</th></tr></thead><tbody><tr><th>Rakesh</th><th>Rakesh</th></tr><tr><th>Rakesh</th><th>Rakesh</th></tr><tr><th>Rakesh</th><th>Rakesh</th></tr><tr><th>Rakesh</th><th>Rakesh</th></tr></tbody></table></body></html>';
header('Content-type: application/excel');
header('Content-type: image/jpeg,image/gif,image/png');
header("Content-Disposition: attachment; filename=download.xls");
header("Pragma: ");
header("Cache-Control: ");
echo $content;
?>
나는 엑셀 파일을 다운로드한 다음 사용자를 특정 위치로 리디렉션하고 싶습니다.
또한 당신이 제대로 했다면 당신의 코드 점화기 코드를 나에게 도와줄 수 있습니다.
아래 방법을 사용해 보십시오. 효과가 있기를 바랍니다.
- 열다.
ajaxexcel.php
을 통해 새 창에.window.open
- 다운로드를 시작한 다음 닫습니다.
- 닫히는 대로 페이지를 리디렉션합니다.
저는 다운로드하기가 매우 어렵다고 생각합니다.PHP Excel을 사용하여 파일을 만들고 다운로드하십시오.
당신은 Ajax 요청을 이용하여 파일을 다운로드할 수 없습니다.파일을 다운로드할 수 있는 특정 위치로 리디렉션해야 하는 모든 방법.이것으로 시도할 수도 있지만, 별도의 탭에서 파일을 다운로드하고 페이지를 특정 페이지로 리디렉션해 보십시오.
<input id="btnGetResponse" type="button" value="Redirect" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnGetResponse").click(function () {
window.open('/test/excel.php');
window.location = "http://stackoverflow.com/";
});
});
</script>
또한 PHP 파일(excel.php)에서 이 행을 제거합니다.그렇지 않으면 JPG 또는 PNG로 파일을 다운로드합니다.
header('Content-type: image/jpeg,image/gif,image/png');
https://github.com/johnculviner/jquery.fileDownload js를 사용하여:
$.ajax({
type: "POST",
url: "/site/ajaxexcel.php",
data: {'value':'send'},
cache: false,
success: function(html)
{
$.fileDownload("ajaxheader.php",
{
successCallback: function (url) {
location.href = '<?php echo base_url()."/site/welcome.php" ?>';
},
failCallback: function (responseHtml, url) {
alert('error');
}
});
}
});
그리고 php 쪽에서 머리글에 아래 줄을 추가합니다.
header("Set-Cookie: fileDownload=true; path=/");
사용할 수 있습니다.jquery.fileDownload.js
이를 위하여여기서 예를 찾을 수 있습니다. . . http://www.codeasearch.com/working-with-jquery-filedownload-js-plugin.html
실제로 이러한 상황에서는 빈 옵션으로 파일 위치를 열고 리디렉션하는 것이 좋습니다.이를 위해 양식 구조를 생성하여 작업에 제출해야 합니다.php
예:
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "action.php");
form.setAttribute("target", "myView");
// or you can use _blank : form.setAttribute("target", "_blank");
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "message");
hiddenField.setAttribute("value", "val");
form.appendChild(hiddenField);
document.body.appendChild(form);
window.open('', 'myView');
form.submit();
alert("Redirect in 10 second!");
setTimeout(function(){
location.href = "/home"
}, 10000);
https://github.com/johnculviner/jquery.fileDownload 을 사용하여
또한 PHP 파일(excel.php)에서 이 행을 제거합니다.그렇지 않으면 JPG 또는 PNG로 파일을 다운로드합니다.
헤더('내용 유형: image/jpeg, image/gif, image/png');
가상 양식을 생성하고 게시하여 이를 달성할 수 있습니다.
function autoGenerateAndSubmitForm(method, url, post_data) {
var element = document.getElementById("virtual_form");
if(element != null )
{
element.parentNode.removeChild(element);
}
var form = document.createElement("form");
form.setAttribute("id", "virtual_form");
form.setAttribute("style", "display:none;");
form.setAttribute("target", "_blank"); // This line is very important in your case for redirect in other page and download your file.
form.method = method;
form.action = url;
for(i in post_data)
{
var element=document.createElement("input");
element.value=post_data[i];
element.name=i;
form.appendChild(element);
}
document.body.appendChild(form);
form.submit();
form.parentNode.removeChild(form);
}
필요한 곳에 위의 방법을 호출하십시오. 클릭 이벤트에서 호출하셨을 것입니다.
$('button').on('click', function(e){
autoGenerateAndSubmitForm("POST","/site/ajaxexcel.php",{'value':'send'});
location.href = '<?php echo base_url()."/site/welcome.php" ?>';
});
서버 사이드 코드에서 아래 줄을 제거합니다.
header('Content-type: image/jpeg,image/gif,image/png');
아약스에서...서버에 Excel 파일을 생성하기만 하면 됩니다. Ajax 응답이 Excel 파일의 경로가 됩니다.Ajax가 성공하면 새 탭에서 Excel 파일을 열고(자동으로 Excel을 다운로드함) 동시에 새 위치로 새 탭을 엽니다.
아래에 주어진 Ajax 성공 내부의 샘플 코드
window.open("path to excel..");
window.open("new location");
또한 사용할 수 있습니다(필요한 경우).
window.location.replace("new location");
방법 1: jQuery AJAX 사용
아약스를 다음 코드로 대체합니다.
<script>
$.ajax({
type: "POST",
url: "/site/ajaxexcel.php",
data: {'value':'send'},
cache: false,
success: function(html)
{
window.open("/site/ajaxexcel.php");
location.href = '<?php echo base_url()."/site/welcome.php" ?>';
}
});
</script>
window.open
agaxexcel.dll 파일이 열립니다.location.href
지정된 환영으로 리디렉션됩니다.php 파일.이것이 가장 좋은 방법입니다.
방법 2: jQuery 파일 다운로드 플러그인 사용
jquery 파일 다운로드 스크립트를 포함하고 다음과 같은 작업을 수행합니다.
<a class="download" href="/path/to/file">Download</a>
<script>
$(document).on("click", "a.download", function () {
$.fileDownload($(this).prop('href'))
.done(function () { alert('File download a success!'); //success code})
.fail(function () { alert('File download failed!');//failure code });
return false; //this is critical to stop the click event which will trigger a normal file download
});
</script>
앵커를 를 앵를실클파면다성고되드운공패/있다수니습입력코할드를커릭하로일이에 쓸 수 있습니다.done()/fail()
각각의 기능.
간단한 자바스크립트와 함께 사용하기만 하면 됩니다.
window.location.replace(###file url###);
Ajax는 해결책이 아닙니다.
2)window.open()
팝업은 동일한 도메인에서도 대부분의 브라우저에서 차단됩니다(적어도 얼마 전에 내가 비슷한 것을 구현하려고 했을 때 크롬과 FF에서 발생했습니다)
수 (에, 이같할것있입니다을수반을일복: (된코같것않확지때기문에하인와을드은와은것이그404
그렇지 않으면 파일이 아닌 출력으로 인해 다운로드하지 않고 리디렉션됩니다.)
document.getElementById('zzz').onclick = function() {
ifrm = document.createElement('iframe');
ifrm.style.display = "none";
ifrm.src = "https://github.com/SheetJS/test_files/blob/b07031a7bd5a8b86b9baac94267f20cf81c6d5eb/A4X_2013.xls?raw=true";
// some random xls file from github (it contains just a single "x" character in cell A-4)
ifrm.onload = function() {
window.location.href = "https://jquery.com";
};
document.body.appendChild(ifrm);
return false;
}
<a href="#" id="zzz">
click me
</a>
추신: 당신은 원할 것입니다.application/octet-stream
Content-type
일부 파일 형식(예: PDF)의 헤더를 사용하여 브라우저가 기본 제공 뷰어를 사용하는 대신 파일을 다운로드하도록 강제합니다.
언급URL : https://stackoverflow.com/questions/39139828/download-a-file-and-redirect-it-to-another-page-via-ajax
'programing' 카테고리의 다른 글
기본값의 스프링 @값 이스케이프 콜론(:) (0) | 2023.07.24 |
---|---|
MySQL의 TIMESTAMP 사용 대 직접 타임스탬프 저장 (0) | 2023.07.24 |
정의되지 않은 검사 후에도 유형 스크립트 "error TS2532: 개체가 '정의되지 않음'일 수 있음" (0) | 2023.07.19 |
유형 스크립트 어설션과 같은 유형 가드 (0) | 2023.07.19 |
Numpy를 사용하여 파생물을 어떻게 계산합니까? (0) | 2023.07.19 |