2016-07-01 56 views
2

我遇到了一個很大的問題!在jquery中加載Json文件失敗,代碼如下

我試圖用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  : "[email protected]", 
       }; 

    $('#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"  : "[email protected]", 
} 
+0

的[我如何返回從一個異步調用的響應?(可能的複製http://stackoverflow.com/questions/14220321/how-do-i-返回來自異步調用的響應) –

回答

5

相反的:

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

感謝您的幫助,但我已經嘗試過了!如果我這樣做,它甚至不會使它對console.log的!同樣在我使用的引用上:[api.jquery.com](http://api.jquery.com/jquery.getjson/)解釋了jqXHR對象,這是我試圖獲得的。 – Niqql

+0

@NiklasFett當然它不會因爲它們在*異步*操作完成之前運行! –

+0

@ freedomn-m:不,如果OP嘗試這個'(console.log(「result」))'他會得到字符串「result」:) – pleinx

0

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

與嘗試

您可以從Roxoradev不喜歡它的答案,或者試試這個:

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

代替

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

解釋

你遞延現在存儲在data如果你想不解決這個問題撥打.complete(func).done(func)

從文檔:

jQuery的1.5無極界面還允許的jQuery的Ajax方法,包括$ .getJSON(),把多個.done()。總是(),和.fail()回調在一個請求中,甚至在請求可能完成後分配這些回調。如果請求已完成,則立即觸發回調。

所以,你也可以寫.done()