Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 确定JSON文件是否已正确下载?_Javascript_Ajax_Cordova - Fatal编程技术网

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

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

一个非常简单的问题,如何确定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);
       }
    }
});
您可以使用“完成”或“成功”来了解传输是否完成:

$.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');