2013-02-15 3 views
0

Я новичок в jquery. Мое приложение уже создано. Я вижу два метода ajax, используемых $.getJSON() и $ .ajax(). Здесь то, что я не понимаю, в случае с $.getJSON(), данные, полученные в функции успеха, используются непосредственно как объект. Но в случае с $ .ajax, я вижу код var json = eval('(' + data + ')');, почему нам нужно это преобразование и почему это не требуется для метода $.getJSON(). Пожалуйста, помогите мне в понимании. Ниже приведен код $ .ajax() и $ .getJSON().

$.ajax({ 
    type: 'POST', 
    url: ServiceUrl.SystemConfig, 
    data: "", 
    success : function(data) { 
     var json = eval('(' + data + ')'); 
    } 

    $.getJSON('/index', "", 
    function(json, textStatus) { }) 
+1

http://api.jquery.com/jQuery.getJSON/ –

+0

Возможно, Content-Type установлен неправильно? Или, возможно, неправильная функция используется для загрузки содержимого JS? В любом случае, без ответов, мы не можем сказать, почему – Alexander

ответ

1

$.getJSON(url [, data ] [, success(data, textStatus, jqXHR) ]) метод является сокращением для

$.ajax({ 
    dataType: "json", 
    url: url, 
    data: data, 
    success: success 
}); 

Если вы read the documentation, вы бы увидели, что.

0

$ .getJSON - это ярлык для установки ожидаемого Content-Type в application/json в запросе $ .ajax, который сообщает jQuery проанализировать ответ в объекте JSON перед его возвратом. Это действительно полезно, когда вы знаете, что будете получать JSON. $ .ajax является более общим и, следовательно, не знает, что он получит JSON, если это специально не сказано. Это означает, что ответ от $ .ajax не предварительно проанализирован, и вы должны сделать это сами.