2016-07-23 4 views
0

Я работаю с openweather API и посмотрев на примеры кода, я иногда будет видеть API вызовы, сделанные, например, как это:Когда использовать .ajax или .getJSON при вызове API

function getWeather(callback) { 
    var weather = 'http://api.openweathermap.org/data/2.5/forecast?lat=51.5072&lon=0.1275&units=metric'; 
    $.ajax({ 
     dataType: "jsonp", 
     url: weather, 
     success: callback 
    }); 
} 

Но иногда я будет видеть запросы, сделанные с помощью этого метода:

function gettingJSON(){ 
document.write("jquery loaded"); 
$.getJSON("api.openweathermap.org/data/2.5/weather?q=London&APPID=ee6596241130f193adf1ba90e625cc10",function(json){ 
document.write(json); 
} 

Что главное различие между этими методами и один считается лучше и эффективнее, чем другие?

+0

Иногда данные не являются объектами JSON –

+0

Дубликат [Разница между $ .getJSON() и $ .ajax() в jQuery] (http://stackoverflow.com/questions/1076013/difference-between-getjson- and-ajax-in-jquery) –

+0

@ Bálint Я прочитал это, и он не объяснил, что следует использовать и когда. В частности, если данные являются JSON (например, из Openweather API), есть ли причина использовать $ .ajax или просто перейти к $ .getJSON – Andy

ответ

0

$ .getJSON - это ярлык для $ .ajax, передающего dataType 'json' и метод 'GET'. Используя $ .ajax, вы можете использовать другие методы, такие как «POST» или «PUT» и другие типы данных, такие как «xml» или «html».

В вашем первом примере тип данных - «jsonp», другое - немного другое ... Это когда вы передаете имя функции X, а ответ - это json, завернутый этим именем функции ... X ({...}) полезно, когда вам нужно вызвать веб-api из другого домена, потому что вызов ajax должен находиться в том же домене, но теги <script> могут иметь атрибут src, указывающий на другой домен.