我可以通过发出HTML表单POST请求到新窗口并使用PHP响应来成功生成CSV文件:
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="'.date("Ymdhis").'.csv"');
print get_lines();
然而,这会使窗口保持打开且空白。
我希望自动关闭窗口(在Content-Disposition识别时)或者忽略窗口并简单地通过onClick调用XMLHttpRequest()将表单变量发送到PHP,生成数据文件,然后提示用户保存或打开。
我尝试过:
var xhReq = new XMLHttpRequest();
var parameters = "";
for ( i=0; i<formObj.elements.length; i++ ) {
parameters += formObj.elements[i].name + "=" + encodeURI( formObj.elements[i].value ) + "&";
}
xhReq.open("POST", outputLocation, false);
xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhReq.setRequestHeader("Content-length", parameters.length);
xhReq.setRequestHeader("Connection", "close");
xhReq.send(parameters);
document.write(xhReq.responseText);
但是这样做行不通,因为响应只会作为文本显示在屏幕上。我真正想要的是,在获取所有数据后,发出一个新的header()调用而不打开新窗口 - 这是否可能使用JavaScript实现?