Javascript 确定JSON文件是否已正确下载?
一个非常简单的问题,如何确定JSON文件是否已正确下载?我正在使用ajax从API连接并获取文件 谢谢 让我展示一下代码:Javascript 确定JSON文件是否已正确下载?,javascript,ajax,cordova,Javascript,Ajax,Cordova,一个非常简单的问题,如何确定JSON文件是否已正确下载?我正在使用ajax从API连接并获取文件 谢谢 让我展示一下代码: $.ajax({ url: url, type: "GET", data: {}, dataType: "json", contentType: "application/json; charset=utf-8", timeout: 10000, success: function(uri){ writ
$.ajax({
url: url,
type: "GET",
data: {},
dataType: "json",
contentType: "application/json; charset=utf-8",
timeout: 10000,
success: function(uri){
writeFile(name, JSON.stringify(uri), "Inmark/InmarkDictionary");
ISAPP.spinner.hide();
},
error: function(xhr, status, error){
if(status == "timeout") {
ErrorAlert(label.requestTimeoutLabel);
} else {
ErrorAlert('URL : ' + error.message + ' | status: ' + status);
}
}
});
您可以使用“完成”或“成功”来了解传输是否完成:
$.ajax({
url: "example.php"
}).done(function() {
alert( "success" );
});
然后使用JSON解析进行检查:
$.ajax({
url: "example.php"
}).success(function() {
try {
parsedData = JSON.parse(response);
} catch (e) {
// is not a valid JSON string
}
});
如果我正确理解您的问题,如果它是一个简单的JSON文件或任何其他格式,则除非下载的文件/脚本运行和/或与之通信,或者您让您的应用程序查找类似file.exist的文件,否则您的应用程序将无法正确了解其下载的内容 但是,为了使JSON下载可用,您可能会发现以下内容很有帮助: 如果ajax请求的状态代码为200,则表示下载作业按预期完成。 如果您想确保JSON对象的内容100%正确,您可以对内容进行简单的签名,MD5/SHA就足够了;如果您想更安全,可以使用RSA或EC。例如,远程服务器计算签名,并将其放入JSON: json:{ 内容:{ //将您的原始JSON放在这里 }, 签字:132412341123412342134 } 浏览器获取JSON对象后,重新检查签名以验证内容 或者您可以使用HTTPS。浏览器将为您执行验证
不确定,但您可以尝试对其进行解析,并验证解析是否成功。如果您在ajax上接收到一个200响应代码,并且您可以将返回的数据解析为JSON,那么您就可以确信JSON是正确的。这基本上不是问题。如果您认为可能会遇到问题,那么您可以使用SHA256、MD5等创建校验和,然后将其与文件一起发送,并在传输完成后进行检查。如果我没有访问API的权限,如何对其进行签名?该应用程序仅获取JSON文件。恐怕您必须能够访问服务器代码才能进行签名,服务器和客户端/浏览器代码都需要更改。如果您不能,我认为使用HTTPS是最简单的方法。HTTPS协议确保服务器和浏览器之间数据的安全性和完整性。当我使用HTTPS时,我开始在连接到API时遇到问题。请确保远程API支持HTTPS协议。@自从您改进了答案后,没有任何内容,我现在删除了我的评论。然而,我认为你的评论没有建设性
var obj = {a: 123, b: "4 5 6"};
var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj));
$('<a href="data:' + data + '" download="data.json">download JSON</a>').appendTo('#container');