2010-12-10 117 views
0

我有一個.js文件下面的jQuery Ajax請求:jQuery的AJAX GET失敗

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

請求失敗,並警告彈出,上面寫着 「200 OK」。但是,如果我將ajax請求類型更改爲「POST」,那麼它將起作用,並且我有一個警告,彈出預期數據從Download.aspx/ZipCheck返回。

爲什麼GET失敗,爲什麼POST成功?我的理解必須是兩者之間的差異,因爲我認爲GET請求仍然會從服務器返回一些東西。

+0

還檢查了IE GET緩存的問題,如果從尼克回答不解決它。 – Pieter 2010-12-10 17:54:07

回答

1

WebMethods are by default restricted to POST,你需要明確啓用GET請求,例如在ScriptAttribute使用UseHttpGet,像這樣:

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

啊,我明白了。通過POST使用GET有什麼好處?我的意思是,爲什麼只要使用POST請求並使用它完成GET功能就可以啓用webmethods? – Jagd 2010-12-10 17:58:46

+0

@Jagd - 看到博客文章,第一個鏈接的安全問題...我會說使用POST並完成它:) – 2010-12-10 18:01:11

+0

感謝您的博客鏈接斯科特Guthries。我一定會堅持使用POST現在。 :) – Jagd 2010-12-10 18:40:24