JQuery를 사용하여 AJAX를 사용하여 Excel 데이터 전송
데이터베이스에서 데이터를 꺼내는 기능은 다음과 같습니다.Ajax 콜은 정상적으로 동작하고 있습니다.성공 함수의 탭 구분 데이터를 사용자에게 전송하려면 어떻게 해야 합니까?콘텍트 타입을 「application/vnd.ms-filename」으로 설정해도 기능하지 않았습니다.성공 시 경고에는 올바른 형식의 데이터가 표시됩니다.
function SendToExcel() {
$.ajax({
type: "GET",
url: "/Search.aspx",
contentType: "application/vnd.ms-excel",
dataType: "text",
data: "{id: '" + "asdf" + "'}",
success: function(data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}});
}
브라우저에 데이터를 표시하지 않고 엑셀로 보내고 싶습니다.
편집: 원하는 방법을 찾았습니다.Excel 파일을 저장/열라고 하는 새로운 페이지로 리다이렉트 하는 대신 숨겨진 iframe 안에서 페이지를 열었습니다.그러면 사용자가 버튼을 클릭하면 Excel 파일을 저장/열어야 합니다.페이지 리다이렉트 없음.아약스인가?아뇨, 하지만 그게 제 진짜 문제를 해결해 주죠
버튼 클릭으로 호출하는 기능은 다음과 같습니다.
function SendToExcel() {
var dataString = 'type=excel' +
'&Number=' + $('#txtNumber').val() +
'&Reference=' + $('#txtReference').val()
$("#sltCTPick option").each(function (i) {
dataString = dataString + '&Columns=' + this.value;
});
top.iExcelHelper.location.href = "/Reports/JobSearchResults.aspx?" + dataString;;
}
에이잭스는...잘못된 선택입니다.사용자를 적절한 MIME 유형으로 데이터를 전송하는 서버 리소스로 리디렉션하고 브라우저가 이 리소스로 수행할 작업을 결정하도록 합니다.
HTML에는 시리얼 입력 요소와 자바스크립트 함수를 호출하는 버튼이 있는 폼이 있습니다.onclick="exportExcel();
then in JavaScript file:
function exportExcel(){
var inputs = $("#myForm").serialize();
var url = '/ajaxresponse.php?select=exportExcel&'+inputs;
location.href = url;
}
그리고 마지막으로 무언가에 응답하는 피벗 파일입니다.
PHP 코드:
case 'exportExcel':{
ob_end_clean();
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment;
filename=exportFile.xls");
echo $html->List($bd->ResultSet($_GET));
}
$html은 html을 처리하는 오브젝트이며 $bd는 Database send your html 테이블 또는 원하는 모든 데이터를 반환하는 오브젝트입니다.
AJAX는 JavaScript를 사용하기 때문에 클라이언트의 머신상의 다른 프로세스와의 상호작용을 포함한 JavaScript의 설계한 제한에 의해 구속됩니다.이 경우, Excel 문서를 악성 매크로가 포함된 사이트가 자동으로 로드되는 것을 원하지 않습니다.
브라우저에 데이터를 표시하려면 AJAX를 사용할 수 있습니다.그렇지 않으면 Excel 문서에 대한 링크를 제공하고 브라우저의 정기적인 다운로드 처리 기능을 통해 작업을 결정할 수 있습니다.
javascript로 하고 싶지 않을 수도 있습니다.
Mine 타입의 어플리케이션/csv로 응답 페이지를 작성한 후 사용자를 그 페이지로 리다이렉트하고 싶다고 생각합니다.사용자는 현재 접속되어 있는 페이지를 잃지 않기 때문에 window.open()을 실행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/149821/use-jquery-to-send-excel-data-using-ajax
'programing' 카테고리의 다른 글
| 네트워크에서 오류 StrictMode$AndroidBlockGuardPolicy.onNetwork (0) | 2023.04.05 |
|---|---|
| JSON 개체를 포맷할 때 '{'와 '['의 차이 (0) | 2023.04.05 |
| 서버측 최적화를 위해 $http를 통해 angular-ui의 자동 검색을 서버에 연결하려면 어떻게 해야 합니까? (0) | 2023.04.05 |
| 스프링 부트에서의 context-param 설정 방법 (0) | 2023.04.05 |
| angularjs는 ng-module로 동작하지 않는 필수 항목을 선택합니다. (0) | 2023.04.05 |