2016-10-31 3 views
1

Я пытаюсь загрузить удаленный json-файл асинхронно. Я просто потратил много времени на отладку функции, которую я ожидал работать. Я все еще относительно новичок в JS и хотел бы понять, почему происходит следующее.Почему эти функции .getJSON и .ajax ведут себя по-другому?

Функция, которую я ожидал от работы, возвращается undefined.

$.ajax({ 
    dataType: 'json', 
    url: $url 
}) 
.done(function(data) { 
    console.log(data); 
}); 

В то время как эта функция возвращает ожидаемому объект JSon

$.getJSON($url, function(data) { 
    console.log(data); 
}); 

Я думал, что эти функции эквивалентны. Что здесь происходит?

ответ

0

Вы устанавливаете неправильный атрибут в методе ajax. тип должен быть GET, POST и т. д., но вы настраиваете его на json.

«Тип - это псевдоним для метода. Вы должны использовать тип, если используете версии jQuery до 1.9.0».

Для того чтобы это было правильно, вам необходимо установить dataType в «json», и все должно падать на место. Вы можете прочитать больше о Ajax API на jQuery Docs site

+0

так, как она до сих пор не определен после изменения DATATYPE? – Sreekanth

+0

Да, это еще не определено –

+0

какая версия jQuery вы используете? – Sreekanth

0

попробовать это вместо

$.ajax({ 
    dataType: 'json', 
    url: $url, 
    success: function(data) 
    { 
    console.log(data); 
    } 
}) 
+0

thanks @daniel, в чем разница между 'success' и обратным вызовом' done'? –

+0

Позвольте мне привести вас к этой ссылке для объяснения. http://stackoverflow.com/questions/8840257/jquery-ajax-handling-continue-responses-success-vs-done –