2017-03-02 3 views
0

Ich versuche, diesen Code mit JSONView anzuzeigen, wird aber nicht angezeigt, wenn die Daten aus der API-Callback-Funktion aufgerufen werden, zeigt jedoch Nicht-API-Daten an, wenn sie außerhalb des Callbacks platziert werden.Warum werden meine Json-Daten nicht mit JsonView angezeigt?

// Call FreeGeoIP API to get browser IP address 
 
$.getJSON('https://freegeoip.net/json/', function(data) { 
 
    var ipaddress = data.ip; 
 

 
    // Get browser language 
 
    var language = window.navigator.language; 
 

 
    // Get software 
 
    var software = window.navigator.appVersion; 
 
    var regExp = /\(([^)]+)\)/; 
 
    software = regExp.exec(software)[1]; 
 

 
    // Add data to obj 
 
    var obj = { 
 
    'ipaddress': ipaddress, 
 
    'language': language, 
 
    'software': software 
 
    }; 
 

 
    // Write obj to document 
 
    $('body').html(JSON.stringify(obj)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

Was meinst du? Dein Code funktioniert. Meinst du, es funktioniert nicht in JSONP-Aufrufen? – mplungjan

+1

Es funktioniert. Was ist der Fehler in Ihrer Konsole? ERR_BLOCKED_BY_CLIENT? Möglicherweise müssen Sie AdBlock deaktivieren, wenn Sie eines verwenden - es blockiert die Anfrage. –

Antwort

0

JSONView oder andere json Formatter erkennt, wenn Sie json auf Grundlage auf contentType des geladenen document sehen sind (wie auf HTTP-Header gesetzt).

Da dieser Code unter client side (Browser) ausgeführt werden muss, wird contentType auf text/html festgelegt.

Damit das Plugin den JSON richtig formatiert, muss es wissen, dass das, was Sie suchen, in der Tat JSON ist und es tut dies, indem es contentType Header liest. Das ist der Grund, warum das Holen von Json über dieses Skript json als Text im Bodyattribut anzeigt, aber nicht vom Plugin übernommen wird.

Verwandte Themen