我在本周遇到的一种情况:我们有一个jQuery Ajax调用,该调用返回到服务器以获取数据
$.ajax( { type: "POST", contentType: "application/json; charset=utf-8", url: fullMethodPath, data: data, dataType: "json", success: function(response) { successCallback(response); }, error: errorCallback, complete: completeCallback });
fullMethodPath是页面上静态方法的链接(比如/MyPage.aspx/MyMethod)。
fullMethodPath
/MyPage.aspx/MyMethod
public partial class MyPage : Page { // snip [WebMethod] public static AjaxData MyMethod(string param1, int param2) { // return some data here } }
这行得通,没问题。
一位同事试图用类型为“ GET”的电话代替此呼叫。它坏了,我不得不修复它。最终,我回到了POST,因为我们需要快速修复,但是它一直困扰着我,因为在这种情况下,从语义上来说GET更“正确”。
据我了解,jQuery将数据中的对象转换为查询字符串:/MyPage.aspx/MyMethod?param1=value1¶m2=value2但是我能得到的只是页面的内容MyPage.aspx。
/MyPage.aspx/MyMethod?param1=value1¶m2=value2
MyPage.aspx
这仅仅是Page方法的“功能”,还是有一种使GET请求起作用的方法?
出于安全原因,ASP.Net AJAX页面方法仅支持POST请求。