我读过许多问题,论坛,博客,尝试过很多东西,而我似乎无法使其发挥作用。
我已尝试使用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
的断点。这对我来说是新的,所以任何解释都会非常有用。
答案 0 :(得分:0)
检查服务器的错误:
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()
{
....
}
答案 1 :(得分:0)
我设法在朋友的帮助下弄清楚了,我会发布我的答案,但我相信这很长很复杂。我理解他所做的大部分事情,但我仍然不相信它是如何运作的。这几乎和我做的几乎一样,但是他把JS放在一个单独的文件中并将该文件设置为基础JS。在那里调用了Web服务,从我的JS中调用了调用Web服务的函数。它起作用了lol