[英]ASP.NET Web Forms [WebMethod] not being called by AJAX Post
[英]WebMethod not working in ASP.Net Web Role (Web Forms)?
攝制:
將以下代碼添加到WebForm1.aspx中
<script src="jquery-1.11.1.min.js"></script> <script> $(function() { $.ajax({ type: "POST", url: "WebForm1.aspx/Foo", beforeSend: function (xhr) { xhr.setRequestHeader("Content-type", "application/json; charset=utf-8"); }, contentType: "application/json; charset=utf-8", dataType: "json", data: "{a: 'webmethod!'}", success: function(data) { alert(data.d); }, error: function() { alert("error"); } }); });
將以下函數添加到WebForm1.aspx.cs中的WebForm1類中
[WebMethod()] public static string Foo(string a) { return a; }
將WebRole1項目設置為Startup Project並運行。 瀏覽器將發出“未定義”警報。
但是您可以獲得“網絡方法!” 使用普通的ASP.NET WebForm項目。 怎么了?
我注意到在url: "WebForm1.aspx/Foo"
:如果更改aspx部分,則ajax失敗; 如果將Foo部分更改為任何值,則ajax總是成功。 這不尋常! 在普通的ASP.NET Web窗體應用程序中,更改任一部分都將導致“錯誤”!
如果創建一個空的 ASP.NET Web角色,則ajax將成功!!! 到底是怎么回事?
JavaScriptSerializer非常靈活,但是值得在data參數中嘗試有效的JSON,例如:
data: '{"a": "webmethod!"}'
我相信JSS會處理單引號中的鍵/值,即使這在技術上不是有效的JSON,但未加引號的a
可能會很多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.