首页 > 解决方案 > 如何覆盖 JSON 错误并防止加载空白页面?

问题描述

如何防止我的 JSON 提要崩溃并忽略数据库中的错误(如果它们在运行时发生),以及如何将未定义的错误更改为字符串以作为“待处理”或“不可用”之类的后备返回。

我尝试输入 Try, catch, finally 方法。此外,我发现条件等于和空的 If 语句将 undefined 更改为“字符串”

var flight             = document.getElementById("flight");
var time               = document.getElementById("time");
var airline            = document.getElementById("airline");
var stat               = document.getElementById("status");
var cities             = document.getElementById("cities");

//Loading the document



//this is for updating the url
 var url                = './airport-test.json';
//var url = './proxy.php';
 $(document).ready(function () {
  $.ajax({
 type: "GET",
 dataType: "json",
 url: url,
 async: true,
 contentType: "application/json; charset=utf-8",
 cache: false,
 success: function (data) {
 var flightString      = "";
 var timeString        = "";
 var airlineString     = "";
 var statString        = "";
 var citiesString      = "";

 if(data) {
      try {
        var a           = JSON.parse(data);
        console.log(a);
        } catch(e) {
       var errorMessage = e.name + '' + e.message;
       console.log(errorMessage);
      }
    }


  for (i= 0,l = data.length = 16; i < l; i++ ) {
 code here I erased to fit this question better...

     }




 flight.insertAdjacentHTML('beforeend', flightString);
 time.insertAdjacentHTML('beforeend', timeString);
 airline.insertAdjacentHTML('beforeend', airlineString);
 stat.insertAdjacentHTML('beforeend', statString);
 cities.insertAdjacentHTML('beforeend', citiesString);

      }});

    });

我正在使用带有铬的树莓派,我只是希望 JSON 提要仍然显示,即使出现错误而不是空白页。它大部分时间都有效。此外,希望将 undefined 从错误更改为后备字符串。

标签: javascriptjsonajax

解决方案


不完全确定到底是什么问题,大胆猜测服务器没有正确响应。

定义错误处理程序,

$.ajax({
 type: "GET",
 dataType: "json",
 url: url,
 async: true,
 contentType: "application/json; charset=utf-8",
 cache: false,
 success: function (data) {
  ....
 }
 error: function (error) {
  // handle your error here.
  ....
 }

推荐阅读