2016-07-01 24 views
2

Ich habe ein riesiges Problem!Das Laden der JSON-Datei in jQuery schlägt im folgenden Code fehl

Ich versuche, eine JSON-Datei mit Jquery zu laden, aber es schlägt immer fehl! Ich habe viele verschiedene Dinge ausprobiert, aber nichts hat für mich funktioniert. Ich bin mir auch nicht sicher, wie man es wirklich debuggt, was falsch ist!

Hier ist mein Code:

<!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> 

hier auch meine JSON ist:

{ 
    "low"   : 0, 
    "high"  : 99, 
    "name"  : "Fritz", 
    "rufnummer" : "012", 
    "faxnummer" : "345", 
    "mobil"  : "678", 
    "mail"  : "[email protected]", 
} 
+0

Mögliche Duplikat schreiben [Wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (Http://stackoverflow.com/questions/14220321/how-do-i- return-the-response-from-asynchron-call) –

Antwort

5

Statt:

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

Versuchen mit:

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

Danke für die Hilfe, aber ich habe das schon probiert! Wenn ich das tue, wird es nicht einmal zu den console.log's kommen! Auch auf der Referenz, die ich verwendet habe: [api.jquery.com] (http://api.jquery.com/jquery.getjson/) wird das jqXHR-Objekt erklärt, das ich versuche zu erkennen. – Niqql

+0

@NiklasFett natürlich wird es nicht, weil sie vor dem * asynchronen * Vorgang ausgeführt werden ausgeführt! –

+0

@ freedomn-m: Nein, wenn das OP dies versuchen '(console.log (" Ergebnis "))' er wird Zeichenfolge "Ergebnis" :) – pleinx

0

Sie können es wie die Antwort tun aus Roxoradev oder versuchen Sie dies:

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

statt

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

Erklären

Ihre latente jetzt in data gespeichert, wenn Sie es lösen wollen rufen Sie es mit .complete(func) oder .done(func)

Von Docs:

Die Schnittstelle Versprechen in jQuery 1.5 auch Methoden jQuery Ajax ermöglicht, einschließlich $ .getJSON(), an die Kette mehrere .done(), .always() und .fail() Rückrufe auf eine einzelne Anfrage und sogar diese Rückrufe zuzuweisen, nachdem die Anfrage abgeschlossen wurde. Wenn die Anfrage bereits abgeschlossen ist, wird der Rückruf sofort ausgelöst.

So können Sie auch .done()