在jquery中加载Json文件在以下代码中失败

时间:2016-07-01 13:20:32

标签: jquery json getjson

我遇到了一个很大的问题!

我试图用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",  
}

2 个答案:

答案 0 :(得分:5)

而不是:

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

尝试:

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

答案 1 :(得分:0)

你可以像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(),. aways()和.fail()回调,甚至分配请求后的这些回调可能已经完成。如果请求已经完成,则立即触发回调。

所以你也可以写.done()