2012-10-03 3 views
15

Когда я смотрю на строку запроса из запроса jsonp (код клиента ниже), есть 2 объекта, строка «обратного вызова», которую нужно использовать в ответе (так что коды клиентов направляются к обработчику успеха) и один с ключом «_» ... для чего это подчеркивается? Я не могу найти никакой ссылки на это в любой документации, это, кажется, несколько рода.Что такое подчеркивание в строке запроса jQuery jsonp ajax-запроса?

Хотя я мог бы использовать его для обращения к обработчику ошибок (либо на его включении, в сочетании с обратным вызовом, либо замене номера после подчеркивания в строке обратного вызова), но он не выглядит ,

url = 'http://localhost:11767/Handlers/MyHandler.ashx'; 

...

  $.ajax({ 
       url: url, 
        dataType: "jsonp", 
        error: function (jqXHR, textStatus, errorThrown) { 
         //... 
        }, 
        success : function(d) { 
         //... 
        } 
      }); 

или

   $.getJSON(url + "?callback=?", function(d) { 
       }).success(function(d) { 
        //... 
       }).error(function(jqXHR, textStatus, errorThrown) { 
        //... 
       }).complete(function(d) { 
        //... 
       }); 

Примечание стороны в случае, если это поможет кто-нибудь читает это: так как это запрос JSONP, ошибка будет удар, только если исключение происходит на стороне клиента, например существует тайм-аут или проблема с форматированием ответа (т. е. без использования обратного вызова), чтобы преодолеть это, я всегда регистрирую и проглатываю исключения в обработчиках, но предоставляю стандартный объект ответа (из которого весь ответ состоит) который имеет свойство состояния исключения и свойство сообщения.

+0

Я могу по крайней мере сказать вам, что это, безусловно, is'nt для обработчика ошибок, поскольку запросы JSONP вставляют тег скрипта и не имеют обработчика ошибок, поэтому ваша функция ошибки в приведенном выше коде никогда не будет срабатывать. Скорее всего, подчеркивание не для чего-то, что имеет отношение к XMLHttpRequest вообще? – adeneo

+0

@adeneo - Я пришел к такому же выводу (хотя прочитал мою заметку внизу RE обработчик ошибок). Подчеркивание может быть нецелесообразным, я просто задавался вопросом, что это было, откуда оно взялось, и если это было полезно? –

ответ

29

Номер, на который вы ссылаетесь, - это отметка времени даты запроса. Захватите номер и используйте консоль JavaScript вашего браузера и введите: alert(new Date(/*insert number here*/))

Вы получите предупреждение с датой/временем.

EDIT:

Вот отрывок из jQuery.ajax документ о качестве АЯКС запроса:

кэш
По умолчанию: правда, ложь для DATATYPE 'сценария' и 'JSONP'
Если установлено на false, это заставит запрашиваемые страницы не кэшироваться браузером. Установка кэша в значение false также добавляет параметр строки запроса, "_=[TIMESTAMP]", к URL-адресу.

+0

Спасибо. Вы нашли это документированным где угодно? –

+0

@MrShoubs Я обновил ответ, включив фрагмент документации и ссылку. –

Смежные вопросы