Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以AJAX';谁的反应?_Javascript_Jquery_Ajax_Node.js - Fatal编程技术网

Javascript 以AJAX';谁的反应?

Javascript 以AJAX';谁的反应?,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,我有一个通用的Ajax调用例程,用于调用node.js中的函数。此函数从服务器(主要是xls)读取文件,然后将其流回到客户端 下面是我在Node.js(服务器端)中的实现: 这是我使用的ajax调用 $('#submit').click(function() { $.ajax({ url: '/', type:'POST', data: data, dataType: 'json', }).done(function(data) {

我有一个通用的Ajax调用例程,用于调用node.js中的函数。此函数从服务器(主要是xls)读取文件,然后将其流回到客户端

下面是我在Node.js(服务器端)中的实现:

这是我使用的ajax调用

$('#submit').click(function()
{
   $.ajax({
    url: '/',
    type:'POST',
    data: data,
    dataType: 'json',
    }).done(function(data) {
        console.log(data);
    });      
})
我成功地在控制台中打印了二进制数据(
console.log(data)
)。我的问题是如何将此
数据
转换为具有适当扩展名的文件,然后提示浏览器保存它们


有任何建议或其他解决方法吗?

尝试使用
FileReader
Blob
a
元素,
下载
属性

$('#submit').click(function() {
   $.ajax({
    url: '/',
    type:'POST',
    data: data,
    dataType: 'json',
    }).done(function(data) {
        console.log(data);
        var reader = new FileReader();
        reader.onload = function(e) {
          $("a").attr({"href": e.target.result, "download":"filename"})
          .get().click()
        } 
        reader.readAsDataURL(new Blob([data]));
    });      
})

也许只需使用
window.location.href=“您的url”
然后让浏览器来完成所有这些?不行,因为这个文件是在请求期间创建的,所以它以前不存在。这实际上并不重要。node.js返回文件的内容。您可以让浏览器处理文件保存业务,也可以(如下面的答案所示)自己动手。谢谢。它可以工作,但是,因为我必须在更大的系统中使用angular(MVC模型)实现它,所以我不能这样做。所有请求必须通过模型。这就是我在这里显式编写ajax函数的原因,我希望有一个可以用angular实现的解决方案。但是你的工作在jQuery实现中,但你仍然在尝试实现它。我以前从未用过Blob,我很期待。但是,我对$(“a”)有一个问题,那是什么?@denny
$(“a”)
被用作
文档中现有
元素的示例。尝试在
文档中添加一个
元素,该元素具有唯一的
类名或
id
,将
$(“a.unique”)
$(“a#unique”)
替换为
$(“a”)
,后跟
.attr({“href”:e.target.result,“下载”:“filename”)。get()。单击()
我收到错误:“click”函数未定义。是否需要添加HTML?“是否需要添加HTML?”是否确定FIleReader与节点的二进制数据类型兼容?像上面的Excel XLSX?我照你说的做了。文件已成功下载,但我的办公室无法打开它,并说它已损坏,尽管该文件非常好。
$('#submit').click(function() {
   $.ajax({
    url: '/',
    type:'POST',
    data: data,
    dataType: 'json',
    }).done(function(data) {
        console.log(data);
        var reader = new FileReader();
        reader.onload = function(e) {
          $("a").attr({"href": e.target.result, "download":"filename"})
          .get().click()
        } 
        reader.readAsDataURL(new Blob([data]));
    });      
})