Oto niektóre javascript:Czy metoda post() jquery ma możliwość wywołania metody internetowej asp.net 3.5 webmethod?
$.ajax({
type: "POST",
url: "default.aspx/GetDate",
contentType: "application/json; charset=utf-8",
data: {},
dataType: "json",
success: function(result) {
alert(result.d);
}
});
Powyższa metoda działa jak bym się spodziewał i alarmy ciąg zwrócony z [WebMethod] zwanego GetDate w default.aspx
Ale kiedy używać:
$.post(
"default.aspx/GetDate",
{},
function(result) {
alert(result.d);
},
"json"
);
Alert w tej metodzie sukces nigdy nie zostanie uruchomiony.
w Firebug widzę, że PO jest w zasadzie pracował - zwraca 200 OK
Ale w tym przypadku odpowiedź jest HTML całej strony default.aspx zamiast JSON zwracany, gdy używam $ .ajax() metoda.
EDYCJA: Nagłówki odpowiedzi i żądań przedstawione w firebug NIE są identyczne.
Z $ .ajax() ...
REQUEST:
Accept application/json, text/javascript, */*; q=0.01
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Connection keep-alive
Content-Type application/json; charset=utf-8
Cookie (removed)
Host (removed)
Referer (removed)
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
X-Requested-With XMLHttpRequest
RESPONSE:
Cache-Control private, max-age=0
Content-Length 27
Content-Type application/json; charset=utf-8
Date Wed, 11 Jan 2012 12:36:56 GMT
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
Z $ .post() ...
REQUEST:
Accept application/json, text/javascript, */*; q=0.01
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Connection keep-alive
Cookie (removed)
Host (removed)
Referer (removed)
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
X-Requested-With XMLHttpRequest
RESPONSE:
Cache-Control private
Content-Length 13815
Content-Type text/html; charset=utf-8
Date Wed, 11 Jan 2012 12:36:53 GMT
Server Microsoft-IIS/7.5
X-AspNet-Version 2.0.50727
X-Powered-By ASP.NET
Czy mogę używać z metody $ .post() dla tego, lub czy muszę użyć metody $ .ajax()?
Czy jesteś pewien, że nagłówki żądań są takie same? Czy nagłówek 'Content-Type' nie jest różny? – lonesomeday
Czy na pewno potrzebujesz połączenia z serwisem internetowym? Dosłownie właśnie zrobiłem to za pomocą $ .get i zwracając czysty HTML (bez nagłówków) i działało idealnie na moje potrzeby. Jeśli to pomoże, daj mi znać, a ja napiszę kod. – Archer
Tyle razy, ile przeczytałem je @lonesomeday, twoje podejrzenie jest poprawne - "Content-Type: application/json; charset = utf-8" rzeczywiście znajduje się w nagłówkach żądań z wywołania $ .ajax(). – mikev2