2017-06-25 33 views
0

我目前正在努力使用$.getJSON()并产生.fail()函数。我试图得到它,这样,当一个$.getJSON()失败,它的变量值更改为别的东西 - 如:更改失败功能中的变量值

,因为我也用$.when()后来来检索数据我不能使用另一个变量芒果JSON。

有没有人知道这是否可能,我该如何做或替代?任何帮助非常感谢,谢谢。

var mangoes = $.getJSON("mangoesurl.com/json").fail(mangoes="{value:0}"); 
var mangoes2 = $.getJSON("mangoesurl.com/json2").fail(mangoes="{value:0}"); 
$.when(mangoes, mangoes2).then(data1, data2){ 

} 
+0

怎么样'return {value:0}'? – moped

+0

但是你也想把JSON保存在“芒果”中,对吧? –

+0

@TonySamperi是我做 –

回答

2

如果我理解正确的话,这是你所需要的:

var mangoes = $.getJSON("mangoesurl.com/json").fail(function(){ 
    return {value:0}; 
}); 

这样芒果是响应后空。基本上这个代码得到了JSON,但没有做任何事情。 为了把JSON结果为芒果你需要这个:

var mangoes = $.getJSON("mangoesurl.com/json") 
.success(function(response){ 
    return response; 
}); 
.fail(function(){ 
    return {value:0}; 
}); 

随着当sintax您不能分配内容的芒果......你必须改变的逻辑

var mangoes, mangoes2; 
var deferred1 = $.getJSON("mangoesurl.com/json"); 
var deferred2 = $.getJSON("mangoesurl.com/json2"); 
$.when(deferred1, deferred2).then(function(data1, data2){ 
    mangoes = data1; 
    mangoes2 = data2; 
}, function(error){ 
    mangoes || mangoes = {value:0}; 
    mangoes2 || mangoes2 = {value:0}; 
}); 
+0

从jQuery 3.0开始,将移除.success(),.error()和.complete()回调方法。您可以使用.done(),.fail()和.always()来代替。 – ThucVu

+0

是的。我们不知道他使用的是哪个版本,但这很有用。 –

+0

@TonySamperi我用我使用的$ .when()语句更新了我的问题。通过添加回报,当它失败时,它不会被调用,我不知道为什么。当他们都成功时,它与成功(),但不失败() –