2017-03-02 112 views
0

我試圖用JSONView顯示此代碼,但在從api回調函數內部調用數據時不會顯示,但在放置回調之外時將顯示非api數據。爲什麼我的JSON數據不能用JsonView顯示?

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

你是什麼意思?你的代碼有效。你的意思是它不適用於JSONP調用? – mplungjan

+1

它的工作原理。控制檯中的錯誤是什麼? ERR_BLOCKED_BY_CLIENT?如果您使用的是AdBlock,則可能需要禁用它 - 它會阻止該請求。 –

回答

0

JSONView或任何其他JSON格式檢測如果要在基礎上加載的documentcontentType觀看JSON(如在HTTP頭中設置)。

由於您必須在client side(瀏覽器)上運行此代碼,因此contentType設置爲text/html

對於插件來正確地格式化JSON,它必須知道你在看什麼確實是JSON,它通過讀取contentType標題。 這就是爲什麼通過這個腳本獲取json顯示json作爲body屬性中的文本但是沒有被插件拾取的原因。

相關問題