如何在asp.net webforms中使用jquery ajax发布和访问数据?

时间:2012-10-25 05:11:03

标签: asp.net jquery

这是我目前的代码:

这是default.aspx

<body>
    <form id="form1" runat="server">
    <div id="mydiv">

    </div>
    </form>
    <script>
        $(document).ready(function () {

            $.ajax({
                url: 'Default2.aspx',
                data: "{ 'name': '" + "randel" + "' }",

                type: "POST",
                success: function () {

                    // alert('insert was performed.');
                    $("#mydiv").empty();

                    $("#mydiv").load("Default2.aspx #div");

                },
                error: function (data, status, jqXHR) { alert(jqXHR); }
            });

        })
    </script>
</body>

然后对于Default2.aspx,我想访问这样的数据:

protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Request.Form["name"].ToString();

    }

1 个答案:

答案 0 :(得分:2)

这看起来好像要在ASP.NET中使用 WebMethod

$(document).ready(function () {
            $.ajax({
                url: 'Default2.aspx/HelloWorld',
                data: "{ 'name': '" + "randel" + "' }",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    // alert('insert was performed.');
                    $("#mydiv").empty();
                    $("#mydiv").html(data);
                },
                error: function (data, status, jqXHR) { alert(jqXHR); }
            });
        });

在您的代码中,您应该这样做:

[WebMethod()]
public static string HelloWorld(string name)
{
string message = "Hello " + name;
return message;
}

WebMethods比做 __ doPostBack()更好,因为您使用例如jQuery来控制所有客户端 - 服务器流量。 有关WebMethods的更多信息:here或只是google WebMethods ASP.NET。

如果您想获得某些表单值,则应将其放在 $。ajax data 参数上,并在 WebMethod 中添加相同的参数。

<强> EDITED

从您发布的代码中我看到您希望从Default.aspx发送一些数据到Default2.aspx并从Default2.aspx(#div)加载一些内容。

你可以这样做:

$.ajax({
                url: "/Default2.aspx",
                type: "GET",
                dataType: "html",
                async: false,
                data: { "name": "randel"
                },
                success: function (obj) {
                    // obj will contain the complete contents of the page requested
                    // use jquery to extract just the html inside the body tag
                    $content = $(obj).find('body #div').html();
                    // then update the dialog contents with this and show it
                }
         });

在代码背后:

protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Request.QueryString["name"];
    }