现在,我有一个webapp,它使用jquery ajax进行调用(使用params,从调用通过表单调用)到我的后端并检索xml文件。我想将xml数据放入具有不同扩展名的私有应用程序的文件中。
基本上我只希望用户能够点击一个按钮,它会自动提示他们"打开或保存" 包含返回的ajax xml数据的文件。
我已经涉及使用php发送原始http标头,但我无法弄清楚如何让它工作。 我在javascript和jquery中写了所有这些。
以下代码的唯一功能是(1)进行Ajax调用,(2)将XML写入HTML页面,(3)打开HTML页面。
var format = function() {
$("button#format").click(function() {
$("#form").submit();
$.ajax({
url: "find",
beforeSend: function (xml) {
xml.overrideMimeType("application/octet-stream; charset=x-user-defined");
},
data: $("form#form").serialize(),
dataType: "html",
success: function(xml) {
xmlWindow = window.open("download.ivml");
xmlWindow.document.write(xml);
xmlWindow.focus();
},
error: function(request) {
$("#webdiv").html(request.responseText);
}
});
});
};
答案 0 :(得分:0)
没有必要强迫这样的东西进入AJAX范例,除非你需要在为用户提供之前使用你检索的数据,然后再次,这应该可以在php中完成。所以我会做这样的事情:
<form id="format" action="download.ivml" target="_blank">
...
</form>
在jquery中修改action
就像这样
$('#format').submit(function(){
// tweaking the post data, otherwise this whole block is not needed.
return true;
});
最后在我的服务器上使用.htaccess文件来处理那个奇怪的网址download.ivml
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)download.ivml$ /path/to/where/I/process/the/request
不太确定这个最后.htaccess
文件的语法。