2017-06-25 29 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()語句更新了我的問題。通過添加回報,當它失敗時,它不會被調用,我不知道爲什麼。當他們都成功時,它與成功(),但不失敗() –