【问题标题】:Loading Json file in jquery fails in the following code在 jquery 中加载 Json 文件在以下代码中失败
【发布时间】:2016-07-01 13:20:31
【问题描述】:

我遇到了一个大问题!

我正在尝试使用 Jquery 加载 Json 文件,但它总是失败! 我尝试了很多不同的东西,但对我没有任何效果。我也不确定如何真正调试它,出了什么问题!

这是我的代码:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {
    var url = "content.json";
    var outp = {
                    low         :   0,
                    high        :   99,
                    name        :   "Fritz",
                    rufnummer   :   "012",
                    faxnummer   :   "345",
                    mobil       :   "678",
                    mail        :   "mail@mail.mail",  
                };

    $('#find').on("click", function(){

        var data = $.getJSON( url, function() {
          console.log( "success" );
        })
          .done(function() {
            console.log( "second success" );
          })
          .fail(function() {
            console.log( "error" );
          })
          .always(function() {
            console.log( "complete" );
          });

            console.log(data);      
            console.log(outp);
            console.log("Hi");

           data.complete(function() {
             console.log( "second complete" );
           });
        });
    });
//});
</script>
</head>
<body>
    <p>Postleitszahl:</p>
    <input type="number" autocomplete="on" name="inp" id="inp">
    <button type="button" id="find">Finden</button>
    <p class="output"></p>
</body>
</html>

这也是我的 JSON:

{
    "low"         :   0,
    "high"        :   99,
    "name"        :   "Fritz",
    "rufnummer"   :   "012",
    "faxnummer"   :   "345",
    "mobil"       :   "678",
    "mail"        :   "mail@mail.mail",  
}

【问题讨论】:

标签: jquery json getjson


【解决方案1】:

代替:

var data = $.getJSON( url, function() {...})

尝试:

$.getJSON( url, function(data) {...})

【讨论】:

  • 感谢您的帮助,但我已经尝试过了!如果我这样做,它甚至不会进入console.log!同样在我使用的参考资料中:api.jquery.com jqXHR 对象已解释,我正试图接受。
  • @NiklasFett 当然不会,因为它们在 异步 操作完成之前运行!
  • @freedomn-m : 不,如果 OP 试试这个 (console.log("result")) 他会得到字符串 "result" :)
  • @freedomn-m 但console.log 至少不会显示任何内容吗?在手术以某种方式解决了我的问题后立即显示我的 Json!我现在也有我的 jqXHR 对象! :) 这是我的工作解决方案:var data = $.getJSON( url, function() {console.log(data);});
  • Make it: $.getJSON( url, function(result) { console.log(result); }) 你会看到你的 json。
【解决方案2】:

您可以像Roxoradev 的答案那样做,或者试试这个:

data.complete(function() {
   console.log( data );
});

而不是

data.complete(function() {
   console.log( "second complete" );
});

解释

您的延迟现在存储在data,如果您想解决它,请使用.complete(func).done(func) 调用它

来自文档:

jQuery 1.5 中的 Promise 接口还允许 jQuery 的 Ajax 方法,包括 $.getJSON(),在单个请求上链接多个 .done()、.always() 和 .fail() 回调,甚至分配请求后的这些回调可能已经完成。如果请求已经完成,则立即触发回调。

所以你也可以写.done()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2021-03-14
    相关资源
    最近更新 更多