【问题标题】:How to add onSuccess and onFailure to getJSON()?如何将 onSuccess 和 onFailure 添加到 getJSON()?
【发布时间】:2015-07-19 11:48:11
【问题描述】:

以下代码对服务器进行 API 调用并以 JSON 格式获取响应。然后它将 JSON 对象转换为字符串,并使用相应的 jQuery 函数对其进行解析,并将其存储到本地存储并加载页面。我想在成功时执行此操作,并在失败时抛出错误消息。我尝试了.done().fail() 函数,但它会引发未捕获的表达式错误。

 $.getJSON(apiURL,

                {'call':'login','email':uname, 'pwd':password},

                function(data){

                   localStorage.setItem('testObject', data.id);                   

                   $.ui.loadContent("home", null, null, "fade");  

                }
            );

有人可以在此代码中添加 onSuccess 和 onFailure 吗?

【问题讨论】:

  • 为什么要将数据转换为字符串然后又转换回对象?
  • 我直接尝试过JSON解析。它没有用。我从 api 获得的 JSON 格式不允许我直接访问。所以我先把它变成字符串,然后解析数据。
  • @deadshot: data 会在你看到它时成为一个对象,因为 jQuery 会为你解析它。字符串化然后再次解析是没有意义的。
  • @T.J.Crowder 感谢您的评论。我很感激。我尝试了类似jsbin.com/wexuqusume/2/edit?html,output 的方法,但没有成功。当我进行字符串化和解析时,它起作用了。
  • @deadshot:你不想解析它!只需像使用 parsed 一样使用 data,它已经为你解析了。

标签: javascript jquery json getjson


【解决方案1】:

我尝试了 .done() 和 .fail() 函数,但它会引发未捕获的表达式错误。**

.done.fail 确实是你会这样做的,听起来你试图使用它们的代码有语法错误。

$.getJSON(apiURL, { 'call': 'login', 'email': uname, 'pwd': password })
    .done(function() {
        // Handle success
        var obj = JSON.stringify(data);                 // <=== These lines are
        var parsed = JSON.parse(obj);                   // <=== completely pointless

        localStorage.setItem('testObject', parsed.id);

        //alert(localStorage.getItem('testObject'));

        $.ui.loadContent("home", null, null, "fade");
    })
    .fail(function() {
        // Handle failure
    });

【讨论】:

  • 谢谢。这应该有效。我犯的错误是在执行 .done() 之前部分终止了 $.getJSON()。
【解决方案2】:

尝试使用

$.getJSON(apiURL, { 'call': 'login', 'email': uname, 'pwd': password })
.done(function() {
    var data = JSON.stringify(data); 
    //...  
});
.fail(function(){
  console.log('failure');
});

你也可以这样做

result = $.get('url',{param1:'param'});
result.done(function(data){
   //handle success
});
result.done(function(){
   //handle failure
});

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 2019-12-12
    • 2018-08-03
    • 1970-01-01
    • 2015-11-09
    • 2013-05-12
    相关资源
    最近更新 更多