如何使用ajax将javascript值传递给aspx c#

时间:2019-02-05 17:58:57

标签: javascript c# asp.net ajax parameter-passing

我找不到将javascript文件(我从onclick事件的html文件中获取)中的值传递给aspx.cs文件的方法。

我尝试使用以下代码。每篇文章似乎都以这种方式显示,但是错误不断被调用,还尝试使用“类型”而不是“方法”。

.js文件:

//get 'name' variable here
        $.ajax({
                url: 'WebForm.aspx/Send',
                dataType: "json",
                method: 'post',
                contentType: "application/json; charset=utf-8",
                data: { name: name },
                success: msgsuccess,
                error: msgerror
            });

WebForm.aspx.cs文件:

    [WebMethod]
    public static string Send(string name)
    {//breakpoint here
        //code
    }

代码永远不会到达aspx.cs文件中的断点,因此代码值永远不会传递。

这是我在堆栈溢出中的第一篇文章,如果格式错误,抱歉。

3 个答案:

答案 0 :(得分:1)

您需要向页面(或其母版页)添加ScriptManager控件,并确保ScriptManager的{​​{3}}属性为true

例如,当页面或其母版页面具有这样的ScriptManager控件时:

<asp:ScriptManager runat="server">
        ...
</asp:ScriptManager>

然后添加EnablePageMethods属性并将其设置为true:

<asp:ScriptManager runat="server" EnablePageMethods="true">
        ...
</asp:ScriptManager>

请注意,如果页面的母版页上已有ScriptManager控件,则无法将其添加到页面中。


此外,您可以简化从JavaScript调用方法的过程。您可以简单地使用:

PageMethods.Send(name, msgsuccess, msgerror);

答案 1 :(得分:0)

[WebMethod] parse JSON,因此您需要将请求数据作为字符串发送:

$.ajax({
  url: 'WebForm.aspx/Send',
  dataType: "json",
  method: 'post',
  contentType: "application/json; charset=utf-8",
  data: JSON.stringify({ name: name }), // use JSON.stringify here
  success: msgsuccess,
  error: msgerror
});

其他所有功能都应按预期运行。

答案 2 :(得分:0)

已解决的问题:

按照@TylerRope的建议检查控制台(使用F12),并得到错误号401(未授权)。

因此,我获得资源this post's correct answer并解决了该错误。如果您知道此解决方案可能引起的任何副作用,请与我们分享。

谢谢您的帮助!