【问题标题】:Change variable value in fail function更改失败函数中的变量值
【发布时间】:2017-06-25 18:52:31
【问题描述】:

我目前正在努力处理$.getJSON() 和生成的.fail() 函数。我试图得到它,以便当 $.getJSON() 失败时,它将变量值更改为其他值 - 例如:

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

我不能使用另一个变量,因为我稍后也使用$.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){

}

【问题讨论】:

  • return {value:0} 怎么样?
  • 但是您也希望将 JSON 保存在“芒果”中,对吗?
  • @TonySamperi 是的,我愿意
  • @AlexBoullé 你使用哪个 jquery 版本?
  • @user8175473 v1.11.1

标签: javascript jquery json getjson


【解决方案1】:

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

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

这样mangoes响应后为空。基本上,这段代码获取了 JSON,但什么也不做。 要将 JSON 结果放入 mangoes 您需要这样:

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

使用 When 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};
});

【讨论】:

  • 自 jQuery 3.0 起,.success()、.error() 和 .complete() 回调方法被移除。您可以改用 .done()、.fail() 和 .always()。
  • 是的。我们不知道他使用的是哪个版本,但这很有用。
  • @TonySamperi 我用我正在使用的 $.when() 语句更新了我的问题。通过添加返回,当它失败时它不会被调用,我不知道为什么。当他们都成功时,它适用于success(),但不适用于fail()
  • @TonySamperi 好的,错误功能有效,感谢所有帮助!我将标记为正确答案,但有没有可能的方法来确定是否只有一个芒果失败了?再次感谢,对不起,我对这些东西还很陌生!
  • 我更新了答案。 {value: 0} 只有在变量为空时才会被赋值!所以如果不为空你就知道调用成功了!
猜你喜欢
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2023-01-30
  • 2011-10-18
  • 1970-01-01
  • 2023-02-23
相关资源
最近更新 更多