[英]How to call a server side method from JS
我已經閱讀了很多問題,論壇,博客,嘗試了很多東西,我似乎無法使其發揮作用。
我嘗試過使用PageMethods.MyMethod()
,但是沒有用。 確保我的ScriptManager
具有EnablePageMethods ="true"
,但仍然沒有。 我在服務器端有一個斷點,它永遠不會命中。 嘗試使用ajax仍然沒有
我是第一個嘗試了解如何使其工作,然后在我的程序上實現。
這是我到目前為止所嘗試的:
服務器端:
[System.Web.Services.WebMethod]
public static void SomeMethod(string subject, string body, string recipients, string CurrentUserId)
{
MessageBox.Show("In c#");
}
JS:
function SomeFuntion()
{
debugger; alert("Before web service");
//PageMethods.CreateDraft(var1, var2, var3, var4);
$.ajax
(
{
type: "POST",
url: "NewMessage.aspx/SomeMethod",
data: "{subject:'" + var1+ "', body:'" + var2+ "', recipients:'" + var3
+ "', CurrentUserId:'" + var4+ "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function()
{
alert("In ajax");
}
}
);
}
正如您所看到的,我嘗試了PageMethods
並且它無法正常工作。 我知道函數運行導致我看到警報消息。 順便說一句,當在按鈕上觸發onclick
事件時,將調用該函數。 我沒有得到任何錯誤,也沒有達到MessageBox
的斷點。 這對我來說是新的,所以任何解釋都會非常有用。
檢查服務器的錯誤:
function SomeFuntion()
{
$.ajax({
type: "POST",
url: "NewMessage.aspx/CreateDraft",
data: "{subject:'" + var1+ "', body:'" + var2+ "', recipients:'" + var3+ "', CurrentUserId:'" + var4+ "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend:function ()
{
alert("about to send request");
},
success: function()
{
alert("In ajax");
},
error: function(xhr, status, error)
{
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
);
}
更多新增內容因為您告訴我您正在獲取“用於訪問路徑的HTTP動詞POST'...'是不允許的”您可能需要配置為http POST請求啟用.NET Web服務。
幾年前我已經刪除了.NET,因此我沒有直接經驗,但是從其他站點中可以找到的內容中,您可能需要在服務器級別進行配置,例如:
<system.web>
<webServices>
<protocols>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
或者你方法之上的指令
[ScriptMethod(UseHttpPost = true)]
public string SomeMethod()
{
....
}
我設法在朋友的幫助下弄清楚了,我會發布我的答案,但我相信這很長很復雜。 我理解他所做的大部分事情,但我仍然不相信它是如何運作的。 這幾乎和我做的幾乎一樣,但是他把JS放在一個單獨的文件中並將該文件設置為基礎JS。 在那里調用了Web服務,從我的JS中調用了調用Web服務的函數。 它工作大聲笑
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.