2010-12-10 44 views
0

J'ai la demande ajax jQuery suivant dans un fichier .js:ajax jQuery GET échoue

$.ajax({ 
    type: "GET", 
    url: "Download.aspx/ZipCheck", 
    contentType: "application/json; charset=utf-8", 
    data: "{}", 
    dataType: "json", 
    success: AjaxSucceeded, 
    error: AjaxFailed 
}); 

function AjaxSucceeded(result) { 
    alert(result.d); 
} 

function AjaxFailed(result) { 
    alert(result.status + ' ' + result.statusText); 
} 

La requête échoue et une alerte apparaît qui dit "200 OK". Cependant, si je change le type de requête ajax à "POST" alors cela fonctionne et j'ai une alerte qui apparaît avec les données attendues renvoyées par Download.aspx/ZipCheck.

Pourquoi le test GET échoue-t-il et pourquoi le POST réussit-il? Ma compréhension doit être imparfaite à propos de la différence entre les deux, car je pensais qu'une requête GET retournerait encore quelque chose du serveur.

+0

Consultez également le problème cache IE GET si la réponse de Nick ne résout pas. – Pieter

Répondre

1

WebMethods are by default restricted to POST, vous devez activer explicitement la requête GET, par exemple en utilisant UseHttpGet sur le ScriptAttribute, comme ceci:

[WebMethod, ScriptMethod(UseHttpGet=true)] 
public thing ZipCheck() { 
    //return object 
} 
+0

Ahhh, je vois. Y at-il un avantage à utiliser GET sur POST? Je veux dire, pourquoi passer par l'effort de GET permettant vos webmethods quand vous pouvez simplement utiliser une requête POST et en avoir fini avec elle? – Jagd

+0

@Jagd -Voir l'article de blog, premier lien pour les problèmes de sécurité ... Je dirais utiliser un POST et en avoir fini avec lui :) –

+0

Merci pour ce lien blog de Scott Guthries. Je vais certainement m'en tenir à utiliser POST maintenant. :) – Jagd