jqueryajax-从ajax请求输出文件

jqueryajax-从ajax请求输出文件,ajax,jquery,httpresponse,Ajax,Jquery,Httpresponse,是否可以输出一个文件作为ajax调用的响应? 我编写了一个使用ajax调用输出zip文件的函数,代码如下: <script type="text/javascript"> $(document).ready(function () { $(".ziplink").click(function (e) { e.preventDefault(); var url = $(this).attr('href');

是否可以输出一个文件作为ajax调用的响应? 我编写了一个使用ajax调用输出zip文件的函数,代码如下:

<script type="text/javascript">

    $(document).ready(function () {

        $(".ziplink").click(function (e) {
            e.preventDefault();
            var url = $(this).attr('href');
            var spinner = $(this).parent().children(".spinnerbox");
            spinner.show();
            $.ajax({
                url:url,
                type:"GET",
                dataType:"application/x-zip-compressed",
                success:function (data) {
                    console.log('success');
                    spinner.hide();

                },
                error:function () {
                    console.log('ko');
                    spinner.hide();
                }

            });
        });

    });
</script> 

$(文档).ready(函数(){
$(“.ziplink”)。单击(函数(e){
e、 预防默认值();
var url=$(this.attr('href');
var spinner=$(this.parent().children(“.spinnerbox”);
spinner.show();
$.ajax({
url:url,
键入:“获取”,
数据类型:“应用程序/x-zip-compressed”,
成功:功能(数据){
console.log('success');
spinner.hide();
},
错误:函数(){
console.log('ko');
spinner.hide();
}
});
});
});
现在,从firebug控制台,一切都是ook,但我没有文件输出。少了什么

虽然这在非ajax方式(一个简单的动作链接)中功能齐全,但我希望在服务器处理请求时使用微调器动画

thanx-LuKe

$(“.ziplink”)。单击(函数(e){
$(".ziplink").click(function (e) {

    e.preventDefault();
    var _self = $(this);
    $('.spinner').show();

    $.ajax({
        type : 'HEAD',
        url : _self.attr('href'),
        complete : function(){

            $('.spinner').hide();
            var _tmp = $('<iframe />')
                .attr('src', _self.attr('href'))
                .hide()
                .appendTo(_self)
                setTimeout(function(){
                    _tmp.remove();
                },5000);

        }

    });

});
e、 预防默认值(); var _self=$(本); $('.spinner').show(); $.ajax({ 类型:'头', url:_self.attr('href'), 完成:函数(){ $('.spinner').hide(); var_tmp=$('') .attr('src',_self.attr('href')) .hide() .appendTo(_self) setTimeout(函数(){ _tmp.remove(); },5000); } }); });
演示(“.ziplink”)。单击(函数(e){ e、 预防默认值(); var _self=$(本); $('.spinner').show(); $.ajax({ 类型:'头', url:_self.attr('href'), 完成:函数(){ $('.spinner').hide(); var_tmp=$('') .attr('src',_self.attr('href')) .hide() .appendTo(_self) setTimeout(函数(){ _tmp.remove(); },5000); } }); });
演示

我认为您没有使用文件{data}的内容。您的成功函数不会将数据放在任何地方。您希望在哪里获得文件输出?我希望具有与非ajax方式相同的行为:能够下载文件。我认为您没有使用文件{data}的内容。您的success函数不会将数据放在任何地方。您希望从何处获得文件输出?我希望具有与非ajax方式相同的行为:能够下载文件。谢谢。然而,这种方式有一个副作用:将响应时间增加一倍,因为我们有两个请求:是的,希望您注意到我发送了一个HEAD请求,而不是GET,这样它只下载header。您可以进一步处理请求,比如在允许用户下载文件之前在完整回调中检查200状态……如何?我的意思是我只想要一个GET请求,以避免发送两次请求。可能吗?我认为那是不可能的。。我不确定它是否有效,谢谢。然而,这种方式有一个副作用:将响应时间增加一倍,因为我们有两个请求:是的,希望您注意到我发送了一个HEAD请求,而不是GET,这样它只下载header。您可以进一步处理请求,比如在允许用户下载文件之前在完整回调中检查200状态……如何?我的意思是我只想要一个GET请求,以避免发送两次请求。可能吗?我认为那是不可能的。。我不确定