2012-10-03 6 views
15

Kiedy patrzę na ciąg zapytania z żądania jsonp (kod klienta poniżej), są 2 obiekty, ciąg "wywołania zwrotnego", którego należy użyć w odpowiedzi (aby kody klientów prowadziły do ​​procedury obsługi sukcesu) i z kluczem "_" ... po co to jest podkreślenie? Nie mogę znaleźć żadnego odniesienia do tego w żadnej dokumentacji, wydaje się być pewnego rodzaju.Co to jest podkreślenie w kwerendzie zapytania żądania jsonp ajax jQuery?

Chociaż może być użyty do kierowania do obsługi błędów (albo włączony, w połączeniu z oddzwanianiem, albo zastępuje numer po podkreśleniu w łańcuchu wywołania zwrotnego), ale nie wydaje się być .

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

...

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

lub

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

Side w przypadku pomaga ktoś czytając to: jak to jest prośba jsonp, błąd będzie hit tylko wtedy, gdy wyjątek występuje po stronie klienta, np istnieje limit czasu lub problem z formatowaniem odpowiedzi (tj. bez użycia wywołania zwrotnego), aby przezwyciężyć to, zawsze loguję się i połkam wyjątki w modułach obsługi, ale podaję standardowy obiekt odpowiedzi (z którego składa się cała odpowiedź) ma właściwość stanu wyjątku i właściwość komunikatu.

+0

Mogę przynajmniej powiedzieć, że to na pewno nie jest dla obsługi błędów, ponieważ JSONP żąda wstawiania znacznika skryptu i nie ma procedury obsługi błędów, więc funkcja błędu w powyższym kodzie nigdy nie uruchomi się. Najprawdopodobniej podkreślenie nie jest w ogóle dla czegoś, co jest istotne dla XMLHttpRequest w ogóle? – adeneo

+0

@adeneo - Doszedłem do tego samego wniosku (chociaż przeczytałem moją notatkę na dole RE obsługi błędu). Podkreślenie może nie mieć znaczenia, po prostu zastanawiałem się, co to jest, skąd się wzięło i czy było to przydatne? –

Odpowiedz

29

Numer, na który się odsyłasz, to znacznik daty żądania. Chwyć numer i użyj konsoli JavaScript przeglądarki i wpisz: alert(new Date(/*insert number here*/))

Otrzymasz alert z datą/czasem.

EDIT:

Oto urywek z jQuery.ajax doc dotyczące ajax życzenie:

cache
domyślna: true, false dla dataType 'skrypt' i 'jsonp'
Jeśli zestaw na false, wymusi żądanie stron, które nie będą buforowane przez przeglądarkę. Ustawienie pamięci podręcznej na wartość false powoduje również dodanie parametru adresu zapytania, "_=[TIMESTAMP]", do adresu URL.

+0

Dzięki. Czy udało ci się to udokumentować w dowolnym miejscu? –

+0

@MrShoubs Zaktualizowałem odpowiedź, dodając fragment dokumentacji i link. –