为什么这个JQuery调用asp.net pagemethod加载整个页面?

时间:2009-06-09 22:03:59

标签: asp.net jquery pagemethods

以下是我的html片段:

<input id="btnGetDate" type="submit" value="Get Date" />
    <div id="Result"></div>

<script type="text/javascript">

    $(document).ready(function() {

        $("#btnGetDate").click(function() {
            $.ajax({
                type: "POST",
                url: "Date.aspx/GetDate",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#Result").text(msg.d);
                }
            });
        });
    });

</script>

我的页面方法ID定义如下:

    [System.Web.Services.WebMethod]
    public static string GetDate()
    {
        return DateTime.Now.ToString();
    }

当我点击获取日期按钮时,我看到屏幕上的日期闪烁了一秒钟,但是由于整个页面正在加载,它会消失,当我在firebug中查看时,我看到它正在进行POST,但是很快就消失了。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:3)

尝试从$("#btnGetDate").click()事件处理程序返回 false

    $("#btnGetDate").click(function() {
        $.ajax({
            type: "POST",
            url: "Date.aspx/GetDate",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                $("#Result").text(msg.d);
            }
        });
        return false;
    });

答案 1 :(得分:1)

karim79的解决方案将在Internet Explorer中完成这项工作 - 但为了确保它在Firefox和其他浏览器中也能正常工作,您可能希望向点击处理程序添加一个输入参数,该处理程序将执行click事件,并停止事件

$("#btnGetDate").click(function(ev) {
    ev.stopPropagation();
    $.ajax({
        type: "POST",
        url: "Date.aspx/GetDate",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            $("#Result").text(msg.d);
        }
    });
    return false;
});