确定是否已正确下载JSON文件?

时间:2014-06-05 07:11:14

标签: 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){
        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);
       }
    }
});

3 个答案:

答案 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)

  1. 如果ajax请求的状态代码为200,则表示下载作业按预期完成。
  2. 如果你想确保JSON对象的内容100%正确,你可以签署内容(简单来说,MD5 / SHA就足够了;如果你想更安全,你可以使用RSA或EC)。例如,远程服务器计算签名,并将其放入JSON:

    json:{ 内容:{
         //把你的原始JSON放在这里 }, 签名:“13241234123412342134” }

    浏览器获取JSON对象后,重新检查签名以验证内容。

  3. 或者您可以使用HTTPS。浏览器将为您进行验证。