2010-12-10 15 views
0

ich den folgenden jQuery Ajax-Request in einer JS-Datei habe:jQuery Ajax-GET nicht

$.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); 
} 

Die Anforderung fehlschlägt und eine Warnung erscheint, dass "200 OK" sagt. Wenn ich jedoch den AJAX-Anforderungstyp zu "POST" ändere, funktioniert es und ich habe eine Warnung, die mit den erwarteten Daten erscheint, die von Download.aspx/ZipCheck zurückgegeben werden.

Warum schlägt das GET fehl und warum ist der POST erfolgreich? Mein Verständnis muss fehlerhaft sein über den Unterschied zwischen den beiden, weil ich dachte, dass eine GET-Anfrage immer noch etwas vom Server zurückgeben würde.

+0

Lesen Sie auch den IE GET Problem Cachen, wenn die Antwort von Nick es nicht lösen. – Pieter

Antwort

1

WebMethods are by default restricted to POST, müssen Sie explizit die GET-Anforderung, zum Beispiel ermöglichen, mit UseHttpGet auf dem ScriptAttribute, wie folgt aus:

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

Ahhh, ich verstehe. Hat GET über POST einen Vorteil? Ich meine, warum gehen Sie durch die Bemühungen von GET, Ihre Webmethoden zu aktivieren, wenn Sie einfach eine POST-Anfrage verwenden können und damit fertig sind? – Jagd

+0

@Jagd -Siehe den Blogbeitrag, erster Link für Sicherheitsfragen ... Ich würde sagen, benutze einen POST und sei damit fertig :) –

+0

Danke für diesen Blog-Link von Scott Guthries. Ich bleibe definitiv bei der Verwendung von POST. :) – Jagd