Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 下载文件而不刷新页面_Javascript - Fatal编程技术网

Javascript 下载文件而不刷新页面

Javascript 下载文件而不刷新页面,javascript,Javascript,我有一个javascript页面,它有一个具有特定细节的表。单击一行,它将下载一个JSON文件。我可以下载文件,但下载后页面会刷新 函数测试下载(){ 常量数据={a:“ajith”,b:“kumar”}; 常数数据传输= “data:text/json;charset=utf-8,”+encodeURIComponent(json.stringify(data)); const downloadAnchorNode=document.createElement(“a”); 下载anchorno

我有一个javascript页面,它有一个具有特定细节的表。单击一行,它将下载一个JSON文件。我可以下载文件,但下载后页面会刷新

函数测试下载(){
常量数据={a:“ajith”,b:“kumar”};
常数数据传输=
“data:text/json;charset=utf-8,”+encodeURIComponent(json.stringify(data));
const downloadAnchorNode=document.createElement(“a”);
下载anchornode.setAttribute(“href”,dataStr);
调试器;
下载anchornode.setAttribute(“id”,“anchor”);
setAttribute(“下载”、“提取”+“.json”);
document.body.appendChild(downloadAnchorNode);//firefox需要
下载AnchorNode.click();
}

如何在下载完成后限制页面刷新?

如果单击按钮下载JSON,请尝试以下代码:

function testDownload(e) {
  e.preventDefault();
  const data = { a: "ajith", b: "kumar" };
  const dataStr =
    "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(data));
  const downloadAnchorNode = document.createElement("a");
  downloadAnchorNode.setAttribute("href", dataStr);
  debugger;
  downloadAnchorNode.setAttribute("id", "anchor");
  downloadAnchorNode.setAttribute("onclick", "testDownloadFun(event)");
  downloadAnchorNode.setAttribute("download", "extracted" + ".json");
  document.body.appendChild(downloadAnchorNode); // required for firefox
  downloadAnchorNode.click();
}

我添加了“preventDefault”方法。

add
returnfalse
function@AkashShrivastava,请解释为什么他必须添加
return false
downloadAnchorNode.onclick=function(){testDownloadFun(event);return false}
并确保未从submit调用testDownLoadevent@AhmedsaysReinstateMonica
下载AnchorNode.click()
将调用浏览器重定向,但此处返回false的工作方式与
e.preventDefault
相同,并取消重定向事件对不起,testDownloadFun()对我为测试目的添加的代码没有任何影响。我尝试了preventDefault功能,但下载还没有开始。不,它会阻止为每个元素实现默认功能:例如,切换复选框是单击复选框的默认操作。这个方法演示了如何防止这种情况发生。它不起作用,因为在下载AnchorNode.click()之后还有另一个click事件触发器;我必须防止默认的点击事件,并下载文件。有什么方法可以实现这一点吗?向按钮HTML元素添加“type='button'”属性怎么样?