2013-08-17 3 views
0

PHP 페이지에 json 객체를 게시하는 웹 페이지를 생각한 다음 PHP 페이지가 일부 데이터를 생성하고 데이터를 로컬 파일로 내 보냅니다. 첫 번째 단계에서 데이터가 너무 커서 URL을 통과 할 수 없으므로 JSON을 사용해야합니다. 그러나 JSON 객체를 AJAX 방식으로 PHP에 전달하면 다운로드가 실행되지 않습니다. 이 다운로드가 어떻게 시작될 수 있는지 궁금합니다.JSON을 PHP에 게시 한 다음 PHP에서 파일 다운로드를 시작 하시겠습니까?

//the code will not trigger a download from PHP 
var xmlhttp; 
if (window.XMLHttpRequest) 
    xmlhttp = new XMLHttpRequest(); 
else 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
xmlhttp.open("POST", "export.php"); 
xmlhttp.setRequestHeader("Content-type", "application/json", true); 
xmlhttp.send(JSON.stringify(obj)); 

JavaScript로 에코 데이터를 수신 할 수 있지만 JavaScript로 로컬 파일을 만드는 것은 PHP보다 복잡합니다.

답변

0

해결책을 찾았습니다 : 폼을 만들고 JavaScript를 사용하여 숨겨진 입력 필드를 동적으로 생성하십시오. 제출 버튼을 사용하여 새로 열린 윈도우의 PHP 파일에 양식을 게시하십시오.

0

xmlhttprequest을 사용하지 마시고 json과 PHP를 함께 사용하여 양식을 제출하고 PHP에서 정확한 Content-Type을 지정하십시오.

+0

그러나 그것이 내가 의미했던 것이 아닙니다. PHP에 양식을 제출하는 것이 아니라 많은 양의 데이터 (URL보다 길 수 있음)를 PHP로 전달한 다음 PHP 코드에서 파일을 다운로드 할 것을 기대합니다. 예를 들어 사용자는 웹 페이지의 데이터베이스 테이블에서 일부 행을 선택한 다음 '선택한 행을 파일로 내보내기'버튼을 클릭하여 다운로드를 트리거 할 수 있습니다. – HQXU85

+0

폼과 동일한 HTTP POST 요청을 보냅니다. HTML에 추가 할 필요가 없으므로 JS에서 제출할 수 있으므로 여전히 사용자에게 숨겨져 있습니다. 나는 네가 원했던 방식으로 네가 할 수 있다고 생각하지 않아. 다운로드를 제대로 표시하려면 브라우저에서 새 탭을 생성하거나 javascript에서 위치를 변경해야합니다. – pajaja

관련 문제