Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 getJSON错误处理-使用2个API_Javascript_Json_Ajax_Getjson - Fatal编程技术网

Javascript getJSON错误处理-使用2个API

Javascript getJSON错误处理-使用2个API,javascript,json,ajax,getjson,Javascript,Json,Ajax,Getjson,首先,这不是另一个跨域错误。我正在开发一个简单的webapp,它使用两个api(main和backup)从不同的服务器检索相同的数据。我使用以下模式: //some functions and variables for DOM handling $.getJSON(mainUrl, function(results) { //code to get and handle the data from main API }).fail(function() { $.get

首先,这不是另一个跨域错误。我正在开发一个简单的webapp,它使用两个api(main和backup)从不同的服务器检索相同的数据。我使用以下模式:

//some functions and variables for DOM handling

$.getJSON(mainUrl, function(results) {

    //code to get and handle the data from main API

}).fail(function() { 

    $.getJSON(backupUrl, function(results) {

        //code to get and handle the data from backup API

    });
});
问题在于,主API可能在许多方面失败:

  • 没有响应-我的代码按预期运行良好
  • 响应,但由于API服务器的外部问题,返回属性为空的对象
  • 第二个选项很棘手,因为它不适合getJSON.fail场景。我可以处理的方法是添加一个if语句来检查对象属性是否为null,并从backupAPI处理程序复制代码以检索备份源,因此它看起来如下所示:

    //some functions and variables for DOM handling
    
    $.getJSON(mainUrl, function(results) {
    
         if (results.property) {
    
             //code to get and handle the data from main API
    
         } else {
    
             //code to get and handle the data from backup API
         }
    
    }).fail(function() { 
    
        $.getJSON(backupUrl, function(results) {
    
            //code to get the data from backup API
    
        });
    });
    
    然而,本质上,我在main.js文件的两个地方有相同的代码块,这似乎不是一个好的做法


    你们能帮我妥善解决这个案子吗,避免把同一个代码放在同一个地方两次?谢谢。

    //代码放置在函数中,从备份API中获取数据,然后在放置该代码的任何位置调用该函数,怎么样

    你最终会得到这样的结果

    //some functions and variables for DOM handling
    
    $.getJSON(mainUrl, function(results) {
    
         if (results.property) {
    
             //code to get and handle the data from main API
    
         } else {
    
             getJSONFromBackup();
         }
    
    }).fail(function() { 
    
        getJSONFromBackup();
    
    });
    
    function getJSONFromBackup(){
        $.getJSON(backupUrl, function(results) {
    
            //code to get the data from backup API
    
        });
    }
    

    //代码放在一个函数中,从备份API中获取数据,然后在任何地方调用该函数,怎么样

    你最终会得到这样的结果

    //some functions and variables for DOM handling
    
    $.getJSON(mainUrl, function(results) {
    
         if (results.property) {
    
             //code to get and handle the data from main API
    
         } else {
    
             getJSONFromBackup();
         }
    
    }).fail(function() { 
    
        getJSONFromBackup();
    
    });
    
    function getJSONFromBackup(){
        $.getJSON(backupUrl, function(results) {
    
            //code to get the data from backup API
    
        });
    }
    

    好吧,我想这行得通。我深入研究了json错误处理程序,以至于我没有注意到显而易见的一点,我的上帝……:)谢谢,我想这行得通。我深入研究了json错误处理程序,以至于我没有注意到显而易见的一点,我的上帝……:)谢谢