一个非常简单的问题,如何确定 JSON 文件是否已正确下载?我正在使用ajax连接并从API获取文件。
感谢。
让我展示代码:
$.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);
}
}
});
答案 0 :(得分:0)
您可以使用done()
或success()
来了解传输是否完成:
$.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
}
});
答案 1 :(得分:0)
如果我正确理解您的问题,如果它是一个简单的JSON文件或任何其他格式,您的应用程序将不知道其下载是否正确,除非下载的文件/脚本运行和/或与之通信或您使应用程序查找它(类似于File.exist)。
但是,为了使JSON下载可用,您可能会发现这有用: http://jsfiddle.net/cowboy/hHZa9/
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');
答案 2 :(得分:0)
如果你想确保JSON对象的内容100%正确,你可以签署内容(简单来说,MD5 / SHA就足够了;如果你想更安全,你可以使用RSA或EC)。例如,远程服务器计算签名,并将其放入JSON:
json:{
内容:{
//把你的原始JSON放在这里
},
签名:“13241234123412342134”
}
浏览器获取JSON对象后,重新检查签名以验证内容。
或者您可以使用HTTPS。浏览器将为您进行验证。